diff --git a/.github/workflows/images.yaml b/.github/workflows/images.yaml index 0893329..a84477a 100644 --- a/.github/workflows/images.yaml +++ b/.github/workflows/images.yaml @@ -5,6 +5,9 @@ on: tags: - "*" +permissions: + contents: read + env: IMAGE_NAME: "synadia/nats-server" LINUX_ARCHS: "linux/arm64,linux/arm/v6,linux/arm/v7,linux/amd64,linux/386,linux/s390x,linux/ppc64le" @@ -15,9 +18,6 @@ jobs: if: ${{ startsWith(github.ref_name, 'v2.10.') }} runs-on: ubuntu-latest - permissions: - contents: read - steps: - name: Checkout repository uses: actions/checkout@v4 @@ -60,13 +60,18 @@ jobs: build-args: | BASE_IMAGE=${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-alpine3.22 - windows-2019-2_10: - name: Build Windows (2.10.x) + windows-2_10: + name: Test Windows Server LTSC ${{ matrix.ltsc }} (${{ matrix.version }}) if: ${{ startsWith(github.ref_name, 'v2.10.') }} - runs-on: windows-2019 - - permissions: - contents: read + runs-on: windows-${{ matrix.ltsc }} + strategy: + fail-fast: false + matrix: + version: + - 2.10.x + ltsc: + - 2022 + # - 2025 steps: - name: Checkout repository @@ -88,34 +93,31 @@ jobs: echo "TAG=${TAG#v}" >> "$GITHUB_OUTPUT" # Buildx is not supported on Windows yet. - - name: windowsservercore-1809 + - name: windowsservercore-ltsc${{ matrix.ltsc }} shell: pwsh run: | docker build ` - --tag "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-windowsservercore-1809" ` - ./2.10.x/windowsservercore-1809 + --tag "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-windowsservercore-ltsc${{ matrix.ltsc }}" ` + ./${{ matrix.version }}/windowsservercore-ltsc${{ matrix.ltsc }} - docker push "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-windowsservercore-1809" + docker push "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-windowsservercore-ltsc${{ matrix.ltsc }}" - - name: nanoserver-1809 + - name: nanoserver-ltsc${{ matrix.ltsc }} shell: pwsh run: | docker build ` - --file ./2.10.x/nanoserver-1809/Dockerfile.preview ` - --build-arg "BASE_IMAGE=${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-windowsservercore-1809" ` - --tag "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-nanoserver-1809" ` - ./2.10.x/nanoserver-1809 + --file ./${{ matrix.version }}/nanoserver-ltsc${{ matrix.ltsc }}/Dockerfile.preview ` + --build-arg "BASE_IMAGE=${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-windowsservercore-ltsc${{ matrix.ltsc }}" ` + --tag "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-nanoserver-ltsc${{ matrix.ltsc }}" ` + ./${{ matrix.version }}/nanoserver-ltsc${{ matrix.ltsc }} - docker push "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-nanoserver-1809" + docker push "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-nanoserver-ltsc${{ matrix.ltsc }}" linux-2_11: name: Build Linux (2.11.x) if: ${{ startsWith(github.ref_name, 'v2.11.') }} runs-on: ubuntu-latest - permissions: - contents: read - steps: - name: Checkout repository uses: actions/checkout@v4 @@ -157,13 +159,18 @@ jobs: build-args: | BASE_IMAGE=${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-alpine3.22 - windows-2019-2_11: - name: Build Windows (2.11.x) + windows-2_11: + name: Test Windows Server LTSC ${{ matrix.ltsc }} (${{ matrix.version }}) if: ${{ startsWith(github.ref_name, 'v2.11.') }} - runs-on: windows-2019 - - permissions: - contents: read + runs-on: windows-${{ matrix.ltsc }} + strategy: + fail-fast: false + matrix: + version: + - 2.11.x + ltsc: + - 2022 + # - 2025 steps: - name: Checkout repository @@ -185,22 +192,22 @@ jobs: echo "TAG=${TAG#v}" >> "$GITHUB_OUTPUT" # Buildx is not supported on Windows yet. - - name: windowsservercore-1809 + - name: windowsservercore-ltsc${{ matrix.ltsc }} shell: pwsh run: | docker build ` - --tag "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-windowsservercore-1809" ` - ./2.11.x/windowsservercore-1809 + --tag "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-windowsservercore-ltsc${{ matrix.ltsc }}" ` + ./${{ matrix.version }}/windowsservercore-ltsc${{ matrix.ltsc }} - docker push "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-windowsservercore-1809" + docker push "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-windowsservercore-ltsc${{ matrix.ltsc }}" - - name: nanoserver-1809 + - name: nanoserver-ltsc${{ matrix.ltsc }} shell: pwsh run: | docker build ` - --file ./2.11.x/nanoserver-1809/Dockerfile.preview ` - --build-arg "BASE_IMAGE=${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-windowsservercore-1809" ` - --tag "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-nanoserver-1809" ` - ./2.11.x/nanoserver-1809 + --file ./${{ matrix.version }}/nanoserver-ltsc${{ matrix.ltsc }}/Dockerfile.preview ` + --build-arg "BASE_IMAGE=${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-windowsservercore-ltsc${{ matrix.ltsc }}" ` + --tag "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-nanoserver-ltsc${{ matrix.ltsc }}" ` + ./${{ matrix.version }}/nanoserver-ltsc${{ matrix.ltsc }} - docker push "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-nanoserver-1809" + docker push "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-nanoserver-ltsc${{ matrix.ltsc }}" diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 5b768ef..7f57209 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -1,6 +1,9 @@ name: Docker build testing on: [push, pull_request] +permissions: + contents: read + jobs: linux: name: Test Linux (${{ matrix.version }}) @@ -22,22 +25,25 @@ jobs: cd ./${{ matrix.version }}/tests && ./run-images.sh windows: - name: Test Windows Server 2019 (${{ matrix.version }}) - runs-on: windows-2019 + name: Test Windows Server LTSC ${{ matrix.ltsc }} (${{ matrix.version }}) + runs-on: windows-${{ matrix.ltsc }} strategy: fail-fast: false matrix: version: - 2.10.x - 2.11.x + ltsc: + - 2022 + # - 2025 steps: - name: Checkout code uses: actions/checkout@v1 - name: Build images shell: powershell run: | - cd ./${{ matrix.version }}/tests; ./build-images-2019.ps1 + cd ./${{ matrix.version }}/tests; ./build-images-ltsc${{ matrix.ltsc }}.ps1 - name: Test images shell: powershell run: | - cd ./${{ matrix.version }}/tests; ./run-images-2019.ps1 + cd ./${{ matrix.version }}/tests; ./run-images-ltsc${{ matrix.ltsc }}.ps1 diff --git a/2.10.x/nanoserver-ltsc2022/Dockerfile b/2.10.x/nanoserver-ltsc2022/Dockerfile new file mode 100644 index 0000000..2a99778 --- /dev/null +++ b/2.10.x/nanoserver-ltsc2022/Dockerfile @@ -0,0 +1,9 @@ +FROM mcr.microsoft.com/windows/nanoserver:ltsc2022 +ENV NATS_DOCKERIZED 1 + +COPY --from=nats:2.10.29-windowsservercore-ltsc2022 C:\\nats-server.exe C:\\nats-server.exe +COPY nats-server.conf C:\\nats-server.conf + +EXPOSE 4222 8222 6222 +ENTRYPOINT ["C:\\nats-server.exe"] +CMD ["--config", "nats-server.conf"] diff --git a/2.10.x/nanoserver-ltsc2022/Dockerfile.preview b/2.10.x/nanoserver-ltsc2022/Dockerfile.preview new file mode 100644 index 0000000..a07a0e3 --- /dev/null +++ b/2.10.x/nanoserver-ltsc2022/Dockerfile.preview @@ -0,0 +1,12 @@ +ARG BASE_IMAGE=nats:2.10.29-windowsservercore-ltsc2022 +FROM $BASE_IMAGE AS base + +FROM mcr.microsoft.com/windows/nanoserver:ltsc2022 +ENV NATS_DOCKERIZED 1 + +COPY --from=base C:\\nats-server.exe C:\\nats-server.exe +COPY nats-server.conf C:\\nats-server.conf + +EXPOSE 4222 8222 6222 +ENTRYPOINT ["C:\\nats-server.exe"] +CMD ["--config", "nats-server.conf"] diff --git a/2.10.x/nanoserver-1809/nats-server.conf b/2.10.x/nanoserver-ltsc2022/nats-server.conf similarity index 100% rename from 2.10.x/nanoserver-1809/nats-server.conf rename to 2.10.x/nanoserver-ltsc2022/nats-server.conf diff --git a/2.10.x/nanoserver-ltsc2025/Dockerfile b/2.10.x/nanoserver-ltsc2025/Dockerfile new file mode 100644 index 0000000..d174fee --- /dev/null +++ b/2.10.x/nanoserver-ltsc2025/Dockerfile @@ -0,0 +1,9 @@ +FROM mcr.microsoft.com/windows/nanoserver:ltsc2025 +ENV NATS_DOCKERIZED 1 + +COPY --from=nats:2.10.29-windowsservercore-ltsc2025 C:\\nats-server.exe C:\\nats-server.exe +COPY nats-server.conf C:\\nats-server.conf + +EXPOSE 4222 8222 6222 +ENTRYPOINT ["C:\\nats-server.exe"] +CMD ["--config", "nats-server.conf"] diff --git a/2.10.x/nanoserver-ltsc2025/Dockerfile.preview b/2.10.x/nanoserver-ltsc2025/Dockerfile.preview new file mode 100644 index 0000000..9a8df06 --- /dev/null +++ b/2.10.x/nanoserver-ltsc2025/Dockerfile.preview @@ -0,0 +1,12 @@ +ARG BASE_IMAGE=nats:2.10.29-windowsservercore-ltsc2025 +FROM $BASE_IMAGE AS base + +FROM mcr.microsoft.com/windows/nanoserver:ltsc2025 +ENV NATS_DOCKERIZED 1 + +COPY --from=base C:\\nats-server.exe C:\\nats-server.exe +COPY nats-server.conf C:\\nats-server.conf + +EXPOSE 4222 8222 6222 +ENTRYPOINT ["C:\\nats-server.exe"] +CMD ["--config", "nats-server.conf"] diff --git a/2.10.x/windowsservercore-1809/nats-server.conf b/2.10.x/nanoserver-ltsc2025/nats-server.conf similarity index 100% rename from 2.10.x/windowsservercore-1809/nats-server.conf rename to 2.10.x/nanoserver-ltsc2025/nats-server.conf diff --git a/2.10.x/tests/build-images-2019.ps1 b/2.10.x/tests/build-images-ltsc2022.ps1 similarity index 64% rename from 2.10.x/tests/build-images-2019.ps1 rename to 2.10.x/tests/build-images-ltsc2022.ps1 index b3f180b..b42c3fd 100644 --- a/2.10.x/tests/build-images-2019.ps1 +++ b/2.10.x/tests/build-images-ltsc2022.ps1 @@ -11,16 +11,16 @@ Write-Output (Get-WMIObject win32_operatingsystem).name Write-Output (Get-WMIObject win32_operatingsystem).OSArchitecture # The windowsservercore images must be built before the nanoserver images. -cd "../windowsservercore-1809" -Write-Host "building windowsservercore-1809" -docker build --tag "nats:${ver}-windowsservercore-1809" . +cd "../windowsservercore-ltsc2022" +Write-Host "building windowsservercore-ltsc2022" +docker build --tag "nats:${ver}-windowsservercore-ltsc2022" . if ($LASTEXITCODE -ne 0) { exit 1 } -cd "../nanoserver-1809" -Write-Host "building nanoserver-1809" -docker build --tag "nats:${ver}-nanoserver-1809" . +cd "../nanoserver-ltsc2022" +Write-Host "building nanoserver-ltsc2022" +docker build --tag "nats:${ver}-nanoserver-ltsc2022" . if ($LASTEXITCODE -ne 0) { exit 1 } diff --git a/2.10.x/tests/build-images-ltsc2025.ps1 b/2.10.x/tests/build-images-ltsc2025.ps1 new file mode 100644 index 0000000..6ca6341 --- /dev/null +++ b/2.10.x/tests/build-images-ltsc2025.ps1 @@ -0,0 +1,28 @@ +# Show statements as they run. +Set-PSDebug -Trace 2 +# Exit on error. +$ErrorActionPreference = "Stop" + +$ver = 'NATS_SERVER 2.10.29'.Split(' ')[1] + +Write-Output '-- host info ---' +Write-Output $PSVersionTable +Write-Output (Get-WMIObject win32_operatingsystem).name +Write-Output (Get-WMIObject win32_operatingsystem).OSArchitecture + +# The windowsservercore images must be built before the nanoserver images. +cd "../windowsservercore-ltsc2025" +Write-Host "building windowsservercore-ltsc2025" +docker build --tag "nats:${ver}-windowsservercore-ltsc2025" . +if ($LASTEXITCODE -ne 0) { + exit 1 +} + +cd "../nanoserver-ltsc2025" +Write-Host "building nanoserver-ltsc2025" +docker build --tag "nats:${ver}-nanoserver-ltsc2025" . +if ($LASTEXITCODE -ne 0) { + exit 1 +} + +docker images diff --git a/2.10.x/tests/run-images-2019.ps1 b/2.10.x/tests/run-images-ltsc2022.ps1 similarity index 84% rename from 2.10.x/tests/run-images-2019.ps1 rename to 2.10.x/tests/run-images-ltsc2022.ps1 index 56bf0aa..6f3b544 100644 --- a/2.10.x/tests/run-images-2019.ps1 +++ b/2.10.x/tests/run-images-ltsc2022.ps1 @@ -6,8 +6,8 @@ $ErrorActionPreference = "Stop" $ver = "NATS_SERVER 2.10.29".Split(" ")[1] $images = @( - "nats:${ver}-windowsservercore-1809", - "nats:${ver}-nanoserver-1809" + "nats:${ver}-windowsservercore-ltsc2022", + "nats:${ver}-nanoserver-ltsc2022" ) foreach ($img in $images) { diff --git a/2.10.x/tests/run-images-ltsc2025.ps1 b/2.10.x/tests/run-images-ltsc2025.ps1 new file mode 100644 index 0000000..2140dba --- /dev/null +++ b/2.10.x/tests/run-images-ltsc2025.ps1 @@ -0,0 +1,25 @@ +# Show statements as they run. +Set-PSDebug -Trace 2 +# Exit on error. +$ErrorActionPreference = "Stop" + +$ver = "NATS_SERVER 2.10.29".Split(" ")[1] + +$images = @( + "nats:${ver}-windowsservercore-ltsc2025", + "nats:${ver}-nanoserver-ltsc2025" +) + +foreach ($img in $images) { + Write-Output "running ${img}" + $runId = & docker run --detach "${img}" + sleep 1 + + Write-Output "checking ${img}" + docker logs "$runId" + docker ps --filter "id=${runId}" --filter "status=running" --quiet + if ($LASTEXITCODE -ne 0) { + exit 1 + } + docker kill $runId +} diff --git a/2.10.x/windowsservercore-1809/Dockerfile b/2.10.x/windowsservercore-ltsc2022/Dockerfile similarity index 96% rename from 2.10.x/windowsservercore-1809/Dockerfile rename to 2.10.x/windowsservercore-ltsc2022/Dockerfile index 28c4fea..6fa57ab 100644 --- a/2.10.x/windowsservercore-1809/Dockerfile +++ b/2.10.x/windowsservercore-ltsc2022/Dockerfile @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/windows/servercore:1809 +FROM mcr.microsoft.com/windows/servercore:ltsc2022 # Enable exit on error. SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';"] diff --git a/2.11.x/nanoserver-1809/nats-server.conf b/2.10.x/windowsservercore-ltsc2022/nats-server.conf similarity index 100% rename from 2.11.x/nanoserver-1809/nats-server.conf rename to 2.10.x/windowsservercore-ltsc2022/nats-server.conf diff --git a/2.10.x/windowsservercore-ltsc2025/Dockerfile b/2.10.x/windowsservercore-ltsc2025/Dockerfile new file mode 100644 index 0000000..90e2ce0 --- /dev/null +++ b/2.10.x/windowsservercore-ltsc2025/Dockerfile @@ -0,0 +1,38 @@ +FROM mcr.microsoft.com/windows/servercore:ltsc2025 + +# Enable exit on error. +SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';"] + +ENV NATS_DOCKERIZED 1 +ENV NATS_SERVER 2.10.29 +ENV NATS_SERVER_DOWNLOAD https://github.com/nats-io/nats-server/releases/download/v${NATS_SERVER}/nats-server-v${NATS_SERVER}-windows-amd64.zip +ENV NATS_SERVER_SHASUM 98657bf4d5a9ce44168c019ba6894cda8e22e6adc8798edc05c168db7262de29 + +RUN Set-PSDebug -Trace 2 + +RUN Write-Host ('downloading from {0} ...' -f $env:NATS_SERVER_DOWNLOAD); \ + [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ + Invoke-WebRequest -Uri $env:NATS_SERVER_DOWNLOAD -OutFile nats.zip; \ + \ + Write-Host ('verifying sha256 ({0}) ...' -f $env:NATS_SERVER_SHASUM); \ + if ((Get-FileHash nats.zip -Algorithm sha256).Hash -ne $env:NATS_SERVER_SHASUM) { \ + Write-Host 'FAILED!'; \ + exit 1; \ + }; \ + Write-Host 'extracting nats.zip'; \ + Expand-Archive -Path 'nats.zip' -DestinationPath .; \ + \ + Write-Host 'copying binary'; \ + Copy-Item nats-server-v*/nats-server.exe -Destination C:\\nats-server.exe; \ + \ + Write-Host 'cleaning up'; \ + Remove-Item -Force nats.zip; \ + Remove-Item -Recurse -Force nats-server-v*; \ + \ + Write-Host 'complete.'; + +COPY nats-server.conf C:\\nats-server.conf + +EXPOSE 4222 8222 6222 +ENTRYPOINT ["C:\\nats-server.exe"] +CMD ["--config", "nats-server.conf"] diff --git a/2.11.x/windowsservercore-1809/nats-server.conf b/2.10.x/windowsservercore-ltsc2025/nats-server.conf similarity index 100% rename from 2.11.x/windowsservercore-1809/nats-server.conf rename to 2.10.x/windowsservercore-ltsc2025/nats-server.conf diff --git a/2.10.x/nanoserver-1809/Dockerfile b/2.11.x/nanoserver-ltsc2022/Dockerfile similarity index 53% rename from 2.10.x/nanoserver-1809/Dockerfile rename to 2.11.x/nanoserver-ltsc2022/Dockerfile index 3c19449..e01351f 100644 --- a/2.10.x/nanoserver-1809/Dockerfile +++ b/2.11.x/nanoserver-ltsc2022/Dockerfile @@ -1,7 +1,7 @@ -FROM mcr.microsoft.com/windows/nanoserver:1809 +FROM mcr.microsoft.com/windows/nanoserver:ltsc2022 ENV NATS_DOCKERIZED 1 -COPY --from=nats:2.10.29-windowsservercore-1809 C:\\nats-server.exe C:\\nats-server.exe +COPY --from=nats:2.11.4-windowsservercore-ltsc2022 C:\\nats-server.exe C:\\nats-server.exe COPY nats-server.conf C:\\nats-server.conf EXPOSE 4222 8222 6222 diff --git a/2.10.x/nanoserver-1809/Dockerfile.preview b/2.11.x/nanoserver-ltsc2022/Dockerfile.preview similarity index 69% rename from 2.10.x/nanoserver-1809/Dockerfile.preview rename to 2.11.x/nanoserver-ltsc2022/Dockerfile.preview index 2915378..61d96b3 100644 --- a/2.10.x/nanoserver-1809/Dockerfile.preview +++ b/2.11.x/nanoserver-ltsc2022/Dockerfile.preview @@ -1,7 +1,7 @@ -ARG BASE_IMAGE=nats:2.10.29-windowsservercore-1809 +ARG BASE_IMAGE=nats:2.11.4-windowsservercore-ltsc2022 FROM $BASE_IMAGE AS base -FROM mcr.microsoft.com/windows/nanoserver:1809 +FROM mcr.microsoft.com/windows/nanoserver:ltsc2022 ENV NATS_DOCKERIZED 1 COPY --from=base C:\\nats-server.exe C:\\nats-server.exe diff --git a/2.11.x/nanoserver-ltsc2022/nats-server.conf b/2.11.x/nanoserver-ltsc2022/nats-server.conf new file mode 100644 index 0000000..ba2faf9 --- /dev/null +++ b/2.11.x/nanoserver-ltsc2022/nats-server.conf @@ -0,0 +1,27 @@ +# Client port of 4222 on all interfaces +port: 4222 + +# HTTP monitoring port +monitor_port: 8222 + +# This is for clustering multiple servers together. +cluster { + # It is recommended to set a cluster name + name: "my_cluster" + + # Route connections to be received on any interface on port 6222 + port: 6222 + + # Routes are protected, so need to use them with --routes flag + # e.g. --routes=nats-route://ruser:T0pS3cr3t@otherdockerhost:6222 + authorization { + user: ruser + password: T0pS3cr3t + timeout: 2 + } + + # Routes are actively solicited and connected to from this server. + # This Docker image has none by default, but you can pass a + # flag to the nats-server docker image to create one to an existing server. + routes = [] +} diff --git a/2.11.x/nanoserver-1809/Dockerfile b/2.11.x/nanoserver-ltsc2025/Dockerfile similarity index 53% rename from 2.11.x/nanoserver-1809/Dockerfile rename to 2.11.x/nanoserver-ltsc2025/Dockerfile index f8980b0..bc36a8a 100644 --- a/2.11.x/nanoserver-1809/Dockerfile +++ b/2.11.x/nanoserver-ltsc2025/Dockerfile @@ -1,7 +1,7 @@ -FROM mcr.microsoft.com/windows/nanoserver:1809 +FROM mcr.microsoft.com/windows/nanoserver:ltsc2025 ENV NATS_DOCKERIZED 1 -COPY --from=nats:2.11.4-windowsservercore-1809 C:\\nats-server.exe C:\\nats-server.exe +COPY --from=nats:2.11.4-windowsservercore-ltsc2025 C:\\nats-server.exe C:\\nats-server.exe COPY nats-server.conf C:\\nats-server.conf EXPOSE 4222 8222 6222 diff --git a/2.11.x/nanoserver-1809/Dockerfile.preview b/2.11.x/nanoserver-ltsc2025/Dockerfile.preview similarity index 69% rename from 2.11.x/nanoserver-1809/Dockerfile.preview rename to 2.11.x/nanoserver-ltsc2025/Dockerfile.preview index 9f72877..5afb425 100644 --- a/2.11.x/nanoserver-1809/Dockerfile.preview +++ b/2.11.x/nanoserver-ltsc2025/Dockerfile.preview @@ -1,7 +1,7 @@ -ARG BASE_IMAGE=nats:2.11.4-windowsservercore-1809 +ARG BASE_IMAGE=nats:2.11.4-windowsservercore-ltsc2025 FROM $BASE_IMAGE AS base -FROM mcr.microsoft.com/windows/nanoserver:1809 +FROM mcr.microsoft.com/windows/nanoserver:ltsc2025 ENV NATS_DOCKERIZED 1 COPY --from=base C:\\nats-server.exe C:\\nats-server.exe diff --git a/2.11.x/nanoserver-ltsc2025/nats-server.conf b/2.11.x/nanoserver-ltsc2025/nats-server.conf new file mode 100644 index 0000000..ba2faf9 --- /dev/null +++ b/2.11.x/nanoserver-ltsc2025/nats-server.conf @@ -0,0 +1,27 @@ +# Client port of 4222 on all interfaces +port: 4222 + +# HTTP monitoring port +monitor_port: 8222 + +# This is for clustering multiple servers together. +cluster { + # It is recommended to set a cluster name + name: "my_cluster" + + # Route connections to be received on any interface on port 6222 + port: 6222 + + # Routes are protected, so need to use them with --routes flag + # e.g. --routes=nats-route://ruser:T0pS3cr3t@otherdockerhost:6222 + authorization { + user: ruser + password: T0pS3cr3t + timeout: 2 + } + + # Routes are actively solicited and connected to from this server. + # This Docker image has none by default, but you can pass a + # flag to the nats-server docker image to create one to an existing server. + routes = [] +} diff --git a/2.11.x/tests/build-images-2019.ps1 b/2.11.x/tests/build-images-ltsc2022.ps1 similarity index 64% rename from 2.11.x/tests/build-images-2019.ps1 rename to 2.11.x/tests/build-images-ltsc2022.ps1 index dce7030..3f14770 100644 --- a/2.11.x/tests/build-images-2019.ps1 +++ b/2.11.x/tests/build-images-ltsc2022.ps1 @@ -11,16 +11,16 @@ Write-Output (Get-WMIObject win32_operatingsystem).name Write-Output (Get-WMIObject win32_operatingsystem).OSArchitecture # The windowsservercore images must be built before the nanoserver images. -cd "../windowsservercore-1809" -Write-Host "building windowsservercore-1809" -docker build --tag "nats:${ver}-windowsservercore-1809" . +cd "../windowsservercore-ltsc2022" +Write-Host "building windowsservercore-ltsc2022" +docker build --tag "nats:${ver}-windowsservercore-ltsc2022" . if ($LASTEXITCODE -ne 0) { exit 1 } -cd "../nanoserver-1809" -Write-Host "building nanoserver-1809" -docker build --tag "nats:${ver}-nanoserver-1809" . +cd "../nanoserver-ltsc2022" +Write-Host "building nanoserver-ltsc2022" +docker build --tag "nats:${ver}-nanoserver-ltsc2022" . if ($LASTEXITCODE -ne 0) { exit 1 } diff --git a/2.11.x/tests/build-images-ltsc2025.ps1 b/2.11.x/tests/build-images-ltsc2025.ps1 new file mode 100644 index 0000000..2dd1a45 --- /dev/null +++ b/2.11.x/tests/build-images-ltsc2025.ps1 @@ -0,0 +1,28 @@ +# Show statements as they run. +Set-PSDebug -Trace 2 +# Exit on error. +$ErrorActionPreference = "Stop" + +$ver = 'NATS_SERVER 2.11.4'.Split(' ')[1] + +Write-Output '-- host info ---' +Write-Output $PSVersionTable +Write-Output (Get-WMIObject win32_operatingsystem).name +Write-Output (Get-WMIObject win32_operatingsystem).OSArchitecture + +# The windowsservercore images must be built before the nanoserver images. +cd "../windowsservercore-ltsc2025" +Write-Host "building windowsservercore-ltsc2025" +docker build --tag "nats:${ver}-windowsservercore-ltsc2025" . +if ($LASTEXITCODE -ne 0) { + exit 1 +} + +cd "../nanoserver-ltsc2025" +Write-Host "building nanoserver-ltsc2025" +docker build --tag "nats:${ver}-nanoserver-ltsc2025" . +if ($LASTEXITCODE -ne 0) { + exit 1 +} + +docker images diff --git a/2.11.x/tests/run-images-2019.ps1 b/2.11.x/tests/run-images-ltsc2022.ps1 similarity index 84% rename from 2.11.x/tests/run-images-2019.ps1 rename to 2.11.x/tests/run-images-ltsc2022.ps1 index e1a82b9..33a89a6 100644 --- a/2.11.x/tests/run-images-2019.ps1 +++ b/2.11.x/tests/run-images-ltsc2022.ps1 @@ -6,8 +6,8 @@ $ErrorActionPreference = "Stop" $ver = "NATS_SERVER 2.11.4".Split(" ")[1] $images = @( - "nats:${ver}-windowsservercore-1809", - "nats:${ver}-nanoserver-1809" + "nats:${ver}-windowsservercore-ltsc2022", + "nats:${ver}-nanoserver-ltsc2022" ) foreach ($img in $images) { diff --git a/2.11.x/tests/run-images-ltsc2025.ps1 b/2.11.x/tests/run-images-ltsc2025.ps1 new file mode 100644 index 0000000..75760b3 --- /dev/null +++ b/2.11.x/tests/run-images-ltsc2025.ps1 @@ -0,0 +1,25 @@ +# Show statements as they run. +Set-PSDebug -Trace 2 +# Exit on error. +$ErrorActionPreference = "Stop" + +$ver = "NATS_SERVER 2.11.4".Split(" ")[1] + +$images = @( + "nats:${ver}-windowsservercore-ltsc2025", + "nats:${ver}-nanoserver-ltsc2025" +) + +foreach ($img in $images) { + Write-Output "running ${img}" + $runId = & docker run --detach "${img}" + sleep 1 + + Write-Output "checking ${img}" + docker logs "$runId" + docker ps --filter "id=${runId}" --filter "status=running" --quiet + if ($LASTEXITCODE -ne 0) { + exit 1 + } + docker kill $runId +} diff --git a/2.11.x/windowsservercore-1809/Dockerfile b/2.11.x/windowsservercore-ltsc2022/Dockerfile similarity index 96% rename from 2.11.x/windowsservercore-1809/Dockerfile rename to 2.11.x/windowsservercore-ltsc2022/Dockerfile index 3a889b4..bc319a7 100644 --- a/2.11.x/windowsservercore-1809/Dockerfile +++ b/2.11.x/windowsservercore-ltsc2022/Dockerfile @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/windows/servercore:1809 +FROM mcr.microsoft.com/windows/servercore:ltsc2022 # Enable exit on error. SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';"] diff --git a/2.11.x/windowsservercore-ltsc2022/nats-server.conf b/2.11.x/windowsservercore-ltsc2022/nats-server.conf new file mode 100644 index 0000000..ba2faf9 --- /dev/null +++ b/2.11.x/windowsservercore-ltsc2022/nats-server.conf @@ -0,0 +1,27 @@ +# Client port of 4222 on all interfaces +port: 4222 + +# HTTP monitoring port +monitor_port: 8222 + +# This is for clustering multiple servers together. +cluster { + # It is recommended to set a cluster name + name: "my_cluster" + + # Route connections to be received on any interface on port 6222 + port: 6222 + + # Routes are protected, so need to use them with --routes flag + # e.g. --routes=nats-route://ruser:T0pS3cr3t@otherdockerhost:6222 + authorization { + user: ruser + password: T0pS3cr3t + timeout: 2 + } + + # Routes are actively solicited and connected to from this server. + # This Docker image has none by default, but you can pass a + # flag to the nats-server docker image to create one to an existing server. + routes = [] +} diff --git a/2.11.x/windowsservercore-ltsc2025/Dockerfile b/2.11.x/windowsservercore-ltsc2025/Dockerfile new file mode 100644 index 0000000..52a434f --- /dev/null +++ b/2.11.x/windowsservercore-ltsc2025/Dockerfile @@ -0,0 +1,38 @@ +FROM mcr.microsoft.com/windows/servercore:ltsc2025 + +# Enable exit on error. +SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';"] + +ENV NATS_DOCKERIZED 1 +ENV NATS_SERVER 2.11.4 +ENV NATS_SERVER_DOWNLOAD https://github.com/nats-io/nats-server/releases/download/v${NATS_SERVER}/nats-server-v${NATS_SERVER}-windows-amd64.zip +ENV NATS_SERVER_SHASUM c78771905c52a8590f6c20cb101bb38ab65bd3046bd6ab8edf4e38efd41dce6f + +RUN Set-PSDebug -Trace 2 + +RUN Write-Host ('downloading from {0} ...' -f $env:NATS_SERVER_DOWNLOAD); \ + [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ + Invoke-WebRequest -Uri $env:NATS_SERVER_DOWNLOAD -OutFile nats.zip; \ + \ + Write-Host ('verifying sha256 ({0}) ...' -f $env:NATS_SERVER_SHASUM); \ + if ((Get-FileHash nats.zip -Algorithm sha256).Hash -ne $env:NATS_SERVER_SHASUM) { \ + Write-Host 'FAILED!'; \ + exit 1; \ + }; \ + Write-Host 'extracting nats.zip'; \ + Expand-Archive -Path 'nats.zip' -DestinationPath .; \ + \ + Write-Host 'copying binary'; \ + Copy-Item nats-server-v*/nats-server.exe -Destination C:\\nats-server.exe; \ + \ + Write-Host 'cleaning up'; \ + Remove-Item -Force nats.zip; \ + Remove-Item -Recurse -Force nats-server-v*; \ + \ + Write-Host 'complete.'; + +COPY nats-server.conf C:\\nats-server.conf + +EXPOSE 4222 8222 6222 +ENTRYPOINT ["C:\\nats-server.exe"] +CMD ["--config", "nats-server.conf"] diff --git a/2.11.x/windowsservercore-ltsc2025/nats-server.conf b/2.11.x/windowsservercore-ltsc2025/nats-server.conf new file mode 100644 index 0000000..ba2faf9 --- /dev/null +++ b/2.11.x/windowsservercore-ltsc2025/nats-server.conf @@ -0,0 +1,27 @@ +# Client port of 4222 on all interfaces +port: 4222 + +# HTTP monitoring port +monitor_port: 8222 + +# This is for clustering multiple servers together. +cluster { + # It is recommended to set a cluster name + name: "my_cluster" + + # Route connections to be received on any interface on port 6222 + port: 6222 + + # Routes are protected, so need to use them with --routes flag + # e.g. --routes=nats-route://ruser:T0pS3cr3t@otherdockerhost:6222 + authorization { + user: ruser + password: T0pS3cr3t + timeout: 2 + } + + # Routes are actively solicited and connected to from this server. + # This Docker image has none by default, but you can pass a + # flag to the nats-server docker image to create one to an existing server. + routes = [] +} diff --git a/update.py b/update.py index 9467d95..8f1e830 100755 --- a/update.py +++ b/update.py @@ -16,11 +16,14 @@ # Update the NATS_SERVER env variable across applicable files. def update_env_var(base_dir: str, new_ver: str): files = [ - f"./{base_dir}/windowsservercore-1809/Dockerfile", + f"./{base_dir}/windowsservercore-ltsc2022/Dockerfile", + f"./{base_dir}/windowsservercore-ltsc2025/Dockerfile", f"./{base_dir}/tests/build-images.sh", f"./{base_dir}/tests/run-images.sh", - f"./{base_dir}/tests/build-images-2019.ps1", - f"./{base_dir}/tests/run-images-2019.ps1", + f"./{base_dir}/tests/build-images-ltsc2022.ps1", + f"./{base_dir}/tests/build-images-ltsc2025.ps1", + f"./{base_dir}/tests/run-images-ltsc2022.ps1", + f"./{base_dir}/tests/run-images-ltsc2025.ps1", ] + glob.glob(f"./{base_dir}/alpine*/Dockerfile") r = re.compile(r"(NATS_SERVER )" + semver_str) @@ -36,7 +39,8 @@ def update_env_var(base_dir: str, new_ver: str): # Update the nats:x.y.z tag across applicable files. def update_tag_var(base_dir: str, new_ver: str): files = [ - f"./{base_dir}/nanoserver-1809/Dockerfile", + f"./{base_dir}/nanoserver-ltsc2022/Dockerfile", + f"./{base_dir}/nanoserver-ltsc2025/Dockerfile", f"./{base_dir}/scratch/Dockerfile", ] @@ -53,7 +57,8 @@ def update_tag_var(base_dir: str, new_ver: str): # Update the nats:x.y.z tag across applicable files. def update_preview_tag_var(base_dir: str, new_ver: str): files = [ - f"./{base_dir}/nanoserver-1809/Dockerfile.preview", + f"./{base_dir}/nanoserver-ltsc2022/Dockerfile.preview", + f"./{base_dir}/nanoserver-ltsc2025/Dockerfile.preview", f"./{base_dir}/scratch/Dockerfile.preview", ] @@ -70,7 +75,8 @@ def update_preview_tag_var(base_dir: str, new_ver: str): # Update the NATS SHASUM across applicable files. def update_windows_shasums(base_dir: str, new_ver: str, shasums: typing.Dict): files = [ - f"{base_dir}/windowsservercore-1809/Dockerfile", + f"{base_dir}/windowsservercore-ltsc2022/Dockerfile", + f"{base_dir}/windowsservercore-ltsc2025/Dockerfile", ] key = f"nats-server-v{new_ver}-windows-amd64.zip"