Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FEATURE: Windows based docker image 2023.1 #2180

Merged
merged 1 commit into from
Nov 10, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
20 changes: 11 additions & 9 deletions docker/Dockerfile → docker/Dockerfile.linux
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,16 @@

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /tmp
#INSTALL YARN & NODEJS 14
#INSTALL YARN & NODEJS 16
RUN apt-get update \
&& apt-get -y install curl gnupg \
&& apt-get -y install ca-certificates curl sudo gnupg \
&& sudo mkdir -p /etc/apt/keyrings \
&& curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
&& echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_16.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list \
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& curl -sL https://deb.nodesource.com/setup_14.x | bash - \
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
&& apt-get update \
&& apt-get -y install libgif-dev autoconf libtool automake build-essential gettext libglib2.0-dev libcairo2-dev libtiff-dev libexif-dev libpango1.0-dev git sudo nginx ssh yarn nodejs \
&& apt-get -y install libgif-dev autoconf libtool automake build-essential gettext libglib2.0-dev libcairo2-dev libtiff-dev libexif-dev libpango1.0-dev git nginx ssh yarn nodejs \
&& git clone https://github.com/mono/libgdiplus.git /tmp/libgdiplus \
&& cd libgdiplus \
&& ./autogen.sh --with-pango --prefix=/usr \
Expand All @@ -29,8 +31,8 @@ RUN apt-get update \
&& usermod -aG sudo origam \
&& echo "%sudo ALL=NOPASSWD: ALL" >> /etc/sudoers
WORKDIR /root
COPY updateTimezone.sh \
reverse-proxy.conf \
COPY linux/updateTimezone.sh \
linux/reverse-proxy.conf \
/root/
RUN mv reverse-proxy.conf /etc/nginx/sites-available \
&& unlink /etc/nginx/sites-enabled/default \
Expand All @@ -47,10 +49,10 @@ COPY --chown=origam:origam HTML5-SOURCE /home/origam/HTML5-SOURCE/
COPY --chown=origam:origam HTML5 _appsettings.template \
_OrigamSettings.mssql.template \
_OrigamSettings.postgres.template \
startServer.sh \
linux/startServer.sh \
log4net.config \
updateEnvironment.sh \
updateEnvironmentRoot.sh \
linux/updateEnvironment.sh \
linux/updateEnvironmentRoot.sh \
/home/origam/HTML5/
WORKDIR /home/origam/HTML5
RUN mkdir data \
Expand Down
6 changes: 3 additions & 3 deletions docker/Origam_postgres → docker/Dockerfile.linux_postgres
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ RUN apt-get -y install postgresql-${PG_MAJOR} postgresql-client-${PG_MAJOR} \
RUN gem install pups
USER origam
WORKDIR /home/origam
COPY --chown=origam:origam ["postgres.13.template.yml","/home/origam"]
COPY --chown=origam:origam ["pgServer.sh","/home/origam"]
COPY --chown=origam:origam ["startOrigamServer.sh","/home/origam"]
COPY --chown=origam:origam ["linux_postgres\postgres.13.template.yml","/home/origam"]
COPY --chown=origam:origam ["linux_postgres\pgServer.sh","/home/origam"]
COPY --chown=origam:origam ["linux_postgres\startOrigamServer.sh","/home/origam"]
RUN chmod +x pgServer.sh
RUN chmod +x startOrigamServer.sh
CMD sudo /etc/init.d/nginx start & sudo /root/updateTimezone.sh & ./pgServer.sh
27 changes: 27 additions & 0 deletions docker/Dockerfile.windows
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# escape=`
# Learn about building .NET container images:

ARG TAG=ltsc2022

FROM mcr.microsoft.com/windows/servercore:$TAG
WORKDIR /home/origam

RUN mkdir HTML5
RUN mkdir HTML5-SOURCE

COPY HTML5 HTML5/
COPY HTML5-SOURCE HTML5-SOURCE/

WORKDIR /home/origam/HTML5

COPY _appsettings.template .
COPY _OrigamSettings.mssql.template .
COPY _OrigamSettings.postgres.template .
COPY log4net.config .
COPY windows/script.ps1 .
COPY windows/yarninstall.ps1 .
RUN Powershell.exe -executionpolicy remotesigned -File yarninstall.ps1
WORKDIR /home/origam/HTML5-SOURCE
COPY windows/buildfrontend.ps1 .
WORKDIR /home/origam/HTML5
CMD Powershell.exe -executionpolicy remotesigned -File script.ps1
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
4 changes: 4 additions & 0 deletions docker/windows/buildfrontend.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
cd c:\home\origam\HTML5-SOURCE
$Env:NODE_OPTIONS = "--max-old-space-size=1536"
yarn install --frozen-lockfile
yarn build
38 changes: 38 additions & 0 deletions docker/windows/script.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
curl https://dot.net/v1/dotnet-install.ps1 -O dotnet-install.ps1
.\dotnet-install.ps1 -Channel 6.0 -Runtime aspnetcore

cd c:\home\origam\HTML5

rm data -r -force
New-Item -Name "data" -ItemType Directory
cd data
git.exe clone https://$Env:gitUsername:$Env:gitPassword@$Env:gitUrl
cd ..

# generate certificate every start.
openssl.exe rand -base64 10 | Set-Content -NoNewline certpass
openssl.exe req -batch -newkey rsa:2048 -nodes -keyout serverCore.key -x509 -days 728 -out serverCore.cer
openssl.exe pkcs12 -export -in serverCore.cer -inkey serverCore.key -passout file:certpass -out serverCore.pfx

(Get-Content .\_appsettings.template) -replace "certpassword", (Get-Content .\certpass) | Set-Content .\appsettings.json


(Get-Content .\appsettings.json) -replace "ExternalDomain", $Env:ExternalDomain_SetOnStart | Set-Content .\appsettings.json
(Get-Content .\appsettings.json) -replace "pathchatapp", $Env:pathchatapp | Set-Content .\appsettings.json
(Get-Content .\appsettings.json) -replace "chatinterval", $Env:chatinterval | Set-Content .\appsettings.json

(Get-Content .\_OrigamSettings.mssql.template) -replace "OrigamSettings_SchemaExtensionGuid", $Env:OrigamSettings_SchemaExtensionGuid | Set-Content .\OrigamSettings.config
(Get-Content .\OrigamSettings.config) -replace "OrigamSettings_DbHost", $Env:OrigamSettings_DbHost | Set-Content .\OrigamSettings.config
(Get-Content .\OrigamSettings.config) -replace "OrigamSettings_DbPort", $Env:OrigamSettings_DbPort | Set-Content .\OrigamSettings.config
(Get-Content .\OrigamSettings.config) -replace "OrigamSettings_DbUsername", $Env:OrigamSettings_DbUsername | Set-Content .\OrigamSettings.config
(Get-Content .\OrigamSettings.config) -replace "OrigamSettings_DatabaseName", $Env:DatabaseName | Set-Content .\OrigamSettings.config
(Get-Content .\OrigamSettings.config) -replace "OrigamSettings_DatabaseName", $Env:DatabaseName | Set-Content .\OrigamSettings.config
(Get-Content .\OrigamSettings.config) -replace "OrigamSettings_DbPassword", $Env:OrigamSettings_DbPassword | Set-Content .\OrigamSettings.config
(Get-Content .\OrigamSettings.config) -replace "OrigamSettings_Title", $Env:OrigamSettings_TitleName | Set-Content .\OrigamSettings.config
(Get-Content .\OrigamSettings.config) -replace "OrigamSettings_Title", $Env:OrigamSettings_TitleName | Set-Content .\OrigamSettings.config
(Get-Content .\OrigamSettings.config) -replace "OrigamSettings_ReportDefinitionsPath", $Env:OrigamSettings_ReportDefinitionsPath | Set-Content .\OrigamSettings.config
(Get-Content .\OrigamSettings.config) -replace "OrigamSettings_RuntimeModelConfigurationPath", $Env:OrigamSettings_RuntimeModelConfigurationPath | Set-Content .\OrigamSettings.config
(Get-Content .\OrigamSettings.config) -replace "OrigamSettings_ModelName", "data\$Env:OrigamSettings_ModelSubDirectory" | Set-Content .\OrigamSettings.config

[System.Environment]::SetEnvironmentVariable('ASPNETCORE_URLS','http://+:8080')
dotnet.exe Origam.Server.dll
15 changes: 15 additions & 0 deletions docker/windows/yarninstall.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
choco install nodejs --version=16.20.1 -y
npm i -g madge
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
choco install yarn -y
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
choco install -y python3
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
choco install -y git
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
choco install -y openssl
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
choco install -y nano
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")