# Builder image FROM mcr.microsoft.com/windows/servercore:ltsc2022 as builder SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';", "$ProgressPreference = 'SilentlyContinue';"] ENV GIT_VERSION=2.23.0 ENV GIT_TAG=v2.23.0.windows.1 ENV GIT_DOWNLOAD_URL=https://github.com/git-for-windows/git/releases/download/v2.23.0.windows.1/MinGit-2.23.0-64-bit.zip ENV GIT_DOWNLOAD_SHA256=8f65208f92c0b4c3ae4c0cf02d4b5f6791d539cd1a07b2df62b7116467724735 RUN Write-Host ('Downloading {0} ...' -f $env:GIT_DOWNLOAD_URL); \ [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ Invoke-WebRequest -Uri $env:GIT_DOWNLOAD_URL -OutFile 'git.zip'; \ \ Write-Host ('Verifying sha256 ({0}) ...' -f $env:GIT_DOWNLOAD_SHA256); \ if ((Get-FileHash git.zip -Algorithm sha256).Hash -ne $env:GIT_DOWNLOAD_SHA256) { \ Write-Host 'FAILED!'; \ exit 1; \ }; \ \ Write-Host 'Expanding ...'; \ Expand-Archive -Path git.zip -DestinationPath C:\git\.; \ \ Write-Host 'Removing ...'; \ Remove-Item git.zip -Force; \ \ Write-Host 'Updating PATH ...'; \ $env:PATH = 'C:\git\cmd;C:\git\mingw64\bin;C:\git\usr\bin;' + $env:PATH; \ [Environment]::SetEnvironmentVariable('PATH', $env:PATH, [EnvironmentVariableTarget]::Machine); \ \ Write-Host 'Verifying install ("git version") ...'; \ git version; \ \ Write-Host 'Complete.'; ENV GOPATH=C:\\go RUN $newPath = ('{0}\bin;C:\Program Files\Go\bin;{1}' -f $env:GOPATH, $env:PATH); \ Write-Host ('Updating PATH: {0}' -f $newPath); \ [Environment]::SetEnvironmentVariable('PATH', $newPath, [EnvironmentVariableTarget]::Machine); # Keep go version in sync with Build GA job. ENV GOLANG_VERSION=1.18 RUN $url = 'https://dl.google.com/go/go1.18.windows-amd64.zip'; \ Write-Host ('Downloading {0} ...' -f $url); \ [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ Invoke-WebRequest -Uri $url -OutFile 'go.zip'; \ \ $sha256 = '65c5c0c709a7ca1b357091b10b795b439d8b50e579d3893edab4c7e9b384f435'; \ Write-Host ('Verifying sha256 ({0}) ...' -f $sha256); \ if ((Get-FileHash go.zip -Algorithm sha256).Hash -ne $sha256) { \ Write-Host 'FAILED!'; \ exit 1; \ }; \ \ Write-Host 'Expanding ...'; \ Expand-Archive go.zip -DestinationPath C:\; \ \ Write-Host 'Moving ...'; \ Move-Item -Path C:\go -Destination 'C:\Program Files\Go'; \ \ Write-Host 'Removing ...'; \ Remove-Item go.zip -Force; \ \ Write-Host 'Verifying install ("go version") ...'; \ go version; \ \ Write-Host 'Complete.'; COPY . /neo-go WORKDIR /neo-go ARG REPO=repository ARG VERSION=dev SHELL ["cmd", "/S", "/C"] RUN go env -w CGO_ENABLED=0 ENV GOGC=off RUN go build -trimpath -v -o ./bin/neo-go.exe -ldflags="-X %REPO%/pkg/config.Version=%VERSION%" ./cli/main.go # Executable image FROM mcr.microsoft.com/windows/servercore:ltsc2022 ARG VERSION LABEL version=%VERSION% WORKDIR / COPY --from=builder /neo-go/config /config COPY --from=builder /neo-go/.docker/privnet-entrypoint.ps1 /usr/bin/privnet-entrypoint.ps1 COPY --from=builder /neo-go/bin/neo-go.exe /usr/bin/neo-go.exe SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';", "$ProgressPreference = 'SilentlyContinue';"] # Check executable version. RUN /usr/bin/neo-go.exe --version ENTRYPOINT ["powershell", "-File", "/usr/bin/privnet-entrypoint.ps1"] CMD ["node", "--config-path", "/config", "--privnet"]