@@ -3,47 +3,45 @@ FROM mcr.microsoft.com/windows/servercore:ltsc2019
3
3
SHELL ["powershell" , "-Command" , "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';" ]
4
4
5
5
# PATH isn't actually set in the Docker image, so we have to set it from within the container
6
- RUN $newPath = ('C:\n odejs;{0}\Y arn\b in;{1}' -f $env:LOCALAPPDATA, $env:PATH); \
6
+ RUN $newPath = ('C:\n odejs;{0}\Y arn\b in;{1};C: \P rogram Files (x86) \G nuPG \b in ' -f $env:LOCALAPPDATA, $env:PATH); \
7
7
Write-Host ('Updating PATH: {0}' -f $newPath); \
8
8
[Environment]::SetEnvironmentVariable('PATH' , $newPath, [EnvironmentVariableTarget]::Machine)
9
9
# doing this first to share cache across versions more aggressively
10
10
11
11
ENV NODE_VERSION 22.7.0
12
12
ENV NODE_CHECKSUM 3fc638727974262b4f65a6b1b43c22fb2d80671cdcb50e1237e0b05d1330aaf7
13
13
14
- RUN $url = ('https://nodejs.org/dist/v{0}/node-v{0}-win-x64.zip' -f $env:NODE_VERSION); \
15
- Write-Host ('Downloading {0} ...' -f $url); \
16
- Invoke-WebRequest -Uri $url -OutFile 'node.zip' ; \
17
- \
18
- Write-Host ('Verifying sha256 ({0}) ...' -f $env:NODE_CHECKSUM); \
19
- if ((Get-FileHash node.zip -Algorithm sha256).Hash -ne $env:NODE_CHECKSUM) { throw 'SHA256 mismatch' }; \
20
- \
21
- Write-Host 'Expanding ...' ; \
22
- Expand-Archive node.zip -DestinationPath C:\; \
23
- \
24
- Write-Host 'Renaming ...' ; \
25
- Rename-Item -Path ('C:\n ode-v{0}-win-x64' -f $env:NODE_VERSION) -NewName 'C:\n odejs' ; \
26
- \
27
- Write-Host 'Removing ...' ; \
28
- Remove-Item node.zip -Force; \
29
- \
30
- Write-Host 'Verifying ("node --version") ...' ; \
31
- node --version; \
32
- Write-Host 'Verifying ("npm --version") ...' ; \
33
- npm --version; \
34
- \
35
- Write-Host 'Complete.'
14
+ ENV GPG_VERSION 2.4.5_20240307
36
15
37
- ENV YARN_VERSION 1.22.22
16
+ RUN Invoke-WebRequest $('https://www.gnupg.org/ftp/gcrypt/binary/gnupg-w32-{0}.exe' -f $env:GPG_VERSION) -OutFile 'gpg-installer.exe' ; \
17
+ Start-Process -FilePath 'gpg-installer.exe' -ArgumentList '/S' -Wait; \
18
+ Remove-Item gpg-installer.exe -Force; \
19
+ gpg --version;
38
20
39
- # "It is recommended to install Yarn through the npm package manager" (https://classic.yarnpkg.com/en/docs/install)
40
- RUN Write-Host 'Installing "yarn" ...' ; \
41
- npm install --global ('yarn@{0}' -f $env:YARN_VERSION); \
42
- \
43
- Write-Host 'Verifying ("yarn --version") ...' ; \
44
- yarn --version; \
45
- \
46
- Write-Host 'Complete.'
21
+ RUN @( \
22
+ '4ED778F539E3634C779C87C6D7062848A1AB005C' , \
23
+ '141F07595B7B3FFE74309A937405533BE57C7D57' , \
24
+ '74F12602B6F1C4E913FAA37AD3A89613643B6201' , \
25
+ 'DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7' , \
26
+ '61FC681DFB92A079F1685E77973F295594EC4689' , \
27
+ '8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600' , \
28
+ 'C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8' , \
29
+ '890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4' , \
30
+ 'C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C' , \
31
+ '108F52B48DB57BB0CC439B2997B01419BD92F80A' , \
32
+ 'A363A499291CBBC940DD62E41F10027AF002F8B0' , \
33
+ 'CC68F5A3106FF448322E48ED27F5E38D5B0A215F' \
34
+ ) | foreach { \
35
+ gpg --keyserver hkps://keys.openpgp.org --recv-keys $_ ; \
36
+ } ; \
37
+ [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 ; \
38
+ Invoke-WebRequest $('https://nodejs.org/dist/v{0}/SHASUMS256.txt.asc' -f $env:NODE_VERSION) -OutFile 'SHASUMS256.txt.asc' -UseBasicParsing ; \
39
+ gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc ; \
40
+ Invoke-WebRequest $('https://nodejs.org/dist/v{0}/node-v{0}-win-x64.zip' -f $env:NODE_VERSION) -OutFile 'node.zip' -UseBasicParsing ; \
41
+ $sum = $(cat SHASUMS256.txt.asc | sls $(' node-v{0}-win-x64.zip' -f $env:NODE_VERSION)) -Split ' ' ; \
42
+ if ((Get-FileHash node.zip -Algorithm sha256).Hash -ne $sum[0]) { Write-Error 'SHA256 mismatch' } ; \
43
+ Expand-Archive node.zip -DestinationPath C:\ ; \
44
+ Rename-Item -Path $('C:\n ode-v{0}-win-x64' -f $env:NODE_VERSION) -NewName 'C:\n odejs'
47
45
48
46
COPY docker-entrypoint.ps1 C:/docker-entrypoint.ps1
49
47
ENTRYPOINT [ "powershell.exe" , "C:/docker-entrypoint.ps1" ]
0 commit comments