Skip to content

Commit a15698e

Browse files
committed
Add windows templates
1 parent 9cfc025 commit a15698e

7 files changed

+128
-2
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
FROM node:0.0.0-nanoserver
2+
3+
RUN mkdir \app
4+
WORKDIR /app
5+
6+
ONBUILD COPY package.json package.json
7+
ONBUILD RUN npm install ; Remove-Item $($env:APPDATA + '\npm-cache') -Force -Recurse ; Remove-Item $($env:TEMP + '\npm-*') -Force -Recurse
8+
ONBUILD COPY . .
9+
10+
CMD [ "npm.cmd", "start" ]

Dockerfile-nanoserver.template

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
FROM microsoft/windowsservercore as download
2+
3+
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
4+
5+
ENV GPG_VERSION 2.3.3
6+
7+
RUN Invoke-WebRequest $('https://files.gpg4win.org/gpg4win-vanilla-{0}.exe' -f $env:GPG_VERSION) -OutFile 'gpg4win.exe' -UseBasicParsing ; \
8+
Start-Process .\gpg4win.exe -ArgumentList '/S' -NoNewWindow -Wait
9+
10+
RUN @( \
11+
'9554F04D7259F04124DE6B476D5A82AC7E37093B', \
12+
'94AE36675C464D64BAFA68DD7434390BDBE9B9C5', \
13+
'FD3A5288F042B6850C66B31F09FE44734EB7990E', \
14+
'71DCFD284A79C3B38668286BC97EC7A07EDE3FC1', \
15+
'DD8F2338BAE7501E3DD5AC78C273792F7D83545D', \
16+
'B9AE9905FFD7803F25714661B63B535A4C206CA9', \
17+
'C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8', \
18+
'56730D5401028683275BD23C23EFEFE93C4CFFFE' \
19+
) | foreach { \
20+
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys $_ ; \
21+
}
22+
23+
ENV NODE_VERSION 0.0.0
24+
25+
RUN Invoke-WebRequest $('https://nodejs.org/dist/v{0}/SHASUMS256.txt.asc' -f $env:NODE_VERSION) -OutFile 'SHASUMS256.txt.asc' -UseBasicParsing ; \
26+
gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc
27+
28+
RUN Invoke-WebRequest $('https://nodejs.org/dist/v{0}/node-v{0}-win-x64.zip' -f $env:NODE_VERSION) -OutFile 'node.zip' -UseBasicParsing ; \
29+
$sum = $(cat SHASUMS256.txt.asc | sls $(' node-v{0}-win-x64.zip' -f $env:NODE_VERSION)) -Split ' ' ; \
30+
if ((Get-FileHash node.zip -Algorithm sha256).Hash -ne $sum[0]) { Write-Error 'SHA256 mismatch' } ; \
31+
Expand-Archive node.zip -DestinationPath C:\ ; \
32+
Rename-Item -Path $('C:\node-v{0}-win-x64' -f $env:NODE_VERSION) -NewName 'C:\nodejs'
33+
34+
FROM microsoft/nanoserver
35+
36+
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
37+
38+
ENV NPM_CONFIG_LOGLEVEL info
39+
40+
COPY --from=download /nodejs /nodejs
41+
42+
RUN New-Item $($env:APPDATA + '\npm') ; \
43+
$env:PATH = 'C:\nodejs;{0}\npm;{1}' -f $env:APPDATA, $env:PATH ; \
44+
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\' -Name Path -Value $env:PATH
45+
46+
CMD [ "node.exe" ]
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
FROM node:0.0.0-windowsservercore
2+
3+
RUN mkdir \app
4+
WORKDIR /app
5+
6+
ONBUILD COPY package.json package.json
7+
ONBUILD RUN npm install ; Remove-Item $($env:APPDATA + '\npm-cache') -Force -Recurse ; Remove-Item $($env:TEMP + '\npm-*') -Force -Recurse
8+
ONBUILD COPY . .
9+
10+
CMD [ "npm.cmd", "start" ]

Dockerfile-windowsservercore.template

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
FROM microsoft/windowsservercore as download
2+
3+
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
4+
5+
ENV GPG_VERSION 2.3.3
6+
7+
RUN Invoke-WebRequest $('https://files.gpg4win.org/gpg4win-vanilla-{0}.exe' -f $env:GPG_VERSION) -OutFile 'gpg4win.exe' -UseBasicParsing ; \
8+
Start-Process .\gpg4win.exe -ArgumentList '/S' -NoNewWindow -Wait
9+
10+
RUN @( \
11+
'9554F04D7259F04124DE6B476D5A82AC7E37093B', \
12+
'94AE36675C464D64BAFA68DD7434390BDBE9B9C5', \
13+
'FD3A5288F042B6850C66B31F09FE44734EB7990E', \
14+
'71DCFD284A79C3B38668286BC97EC7A07EDE3FC1', \
15+
'DD8F2338BAE7501E3DD5AC78C273792F7D83545D', \
16+
'B9AE9905FFD7803F25714661B63B535A4C206CA9', \
17+
'C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8', \
18+
'56730D5401028683275BD23C23EFEFE93C4CFFFE' \
19+
) | foreach { \
20+
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys $_ ; \
21+
}
22+
23+
ENV NODE_VERSION 0.0.0
24+
25+
RUN Invoke-WebRequest $('https://nodejs.org/dist/v{0}/SHASUMS256.txt.asc' -f $env:NODE_VERSION) -OutFile 'SHASUMS256.txt.asc' -UseBasicParsing ; \
26+
gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc
27+
28+
RUN Invoke-WebRequest $('https://nodejs.org/dist/v{0}/node-v{0}-win-x64.zip' -f $env:NODE_VERSION) -OutFile 'node.zip' -UseBasicParsing ; \
29+
$sum = $(cat SHASUMS256.txt.asc | sls $(' node-v{0}-win-x64.zip' -f $env:NODE_VERSION)) -Split ' ' ; \
30+
if ((Get-FileHash node.zip -Algorithm sha256).Hash -ne $sum[0]) { Write-Error 'SHA256 mismatch' } ; \
31+
Expand-Archive node.zip -DestinationPath C:\ ; \
32+
Rename-Item -Path $('C:\node-v{0}-win-x64' -f $env:NODE_VERSION) -NewName 'C:\nodejs'
33+
34+
FROM microsoft/windowsservercore
35+
36+
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
37+
38+
ENV NPM_CONFIG_LOGLEVEL info
39+
40+
COPY --from=download /nodejs /nodejs
41+
42+
RUN New-Item $($env:APPDATA + '\npm') ; \
43+
$env:PATH = 'C:\nodejs;{0}\npm;{1}' -f $env:APPDATA, $env:PATH ; \
44+
[Environment]::SetEnvironmentVariable('PATH', $env:PATH, [EnvironmentVariableTarget]::Machine)
45+
46+
CMD [ "node.exe" ]

architectures

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
bashbrew-arch variants
22
amd64 default,alpine,onbuild,slim,wheezy
33
ppc64le default,onbuild,slim
4+
windows-amd64 windowsservercore,nanoserver

functions.sh

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,12 @@ function get_arch() {
3636
function get_variants() {
3737
local arch
3838
arch=$(get_arch)
39+
if [[ $# -eq 1 ]]; then
40+
arch=$1
41+
shift
42+
fi
3943
local variants
40-
variants=$(grep "$arch" architectures | sed -E 's/'"$arch"'\s*//' | sed -E 's/,/ /g')
44+
variants=$(grep "^$arch" architectures | sed -E 's/'"$arch"'\s*//' | sed -E 's/,/ /g')
4145
echo "$variants"
4246
}
4347

update.sh

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ function update_node_version {
4040
fi
4141

4242
sed -E -i.bak 's/^FROM (.*)/FROM '"$fromprefix"'\1/' "$dockerfile" && rm "$dockerfile".bak
43-
sed -E -i.bak 's/^(ENV NODE_VERSION |FROM .*node:).*/\1'"$version.$fullVersion"'/' "$dockerfile" && rm "$dockerfile".bak
43+
sed -E -i.bak 's/^(ENV NODE_VERSION |FROM .*node:)0.0.0/\1'"$version.$fullVersion"'/' "$dockerfile" && rm "$dockerfile".bak
4444
sed -E -i.bak 's/^(ENV YARN_VERSION ).*/\1'"$yarnVersion"'/' "$dockerfile" && rm "$dockerfile".bak
4545
if [[ "${version/.*/}" -ge 8 || "$arch" = "ppc64le" ]]; then
4646
sed -E -i.bak 's/FROM (.*)alpine:3.4/FROM \1alpine:3.6/' "$dockerfile"
@@ -63,6 +63,15 @@ for version in "${versions[@]}"; do
6363
# Skip non-docker directories
6464
[ -f "$version/$variant/Dockerfile" ] || continue
6565
update_node_version "Dockerfile-$variant.template" "$version/$variant/Dockerfile" "$variant"
66+
done
67+
68+
variants=$(get_variants windows-amd64)
6669

70+
for variant in $variants; do
71+
# Skip non-docker directories
72+
[ -f "$version/windows/$variant/Dockerfile" ] || continue
73+
update_node_version "Dockerfile-$variant.template" "$version/windows/$variant/Dockerfile" "$variant"
74+
[ -f "$version/windows/$variant/onbuild/Dockerfile" ] || continue
75+
update_node_version "Dockerfile-$variant-onbuild.template" "$version/windows/$variant/onbuild/Dockerfile" "$variant"
6776
done
6877
done

0 commit comments

Comments
 (0)