Since recent you can benefit from Sitecore providing ltsc2022 images for your XM/XP solutions which I previously covered in a seperate article. However, looking at your cluster you may see not all the images are ltsc2022 compatible – there is a 1809-based Traefik image, which is coming separately outside of Sitecore docker registry.
Now, it’s good time to get rid of that only left 1809-based Traefik image.
The bad news is that there’s no ltsc2022 image for Traefik for us to use, the good news is that original Dockerfile is available, so I can rewrite it to consume ltsc2022 images. In addition, I took the latest (by the time) version of it which is 2.9.8, while the officially supported is 2.2.0, so it would make sense to parametrize the version as well, taking its settings from .env
file settings.
I created a new docker\build\traefik
folder and ended up with the following Dockerfile within there:
ARG IMAGE_OS FROM mcr.microsoft.com/windows/servercore:${IMAGE_OS} ARG VERSION SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] RUN Invoke-WebRequest \ -Uri "https://github.com/traefik/traefik/releases/download/$env:VERSION/traefik_${env:VERSION}_windows_amd64.zip" \ -OutFile "/traefik.zip"; \ Expand-Archive -Path "/traefik.zip" -DestinationPath "/" -Force; \ Remove-Item "/traefik.zip" -Force EXPOSE 80 ENTRYPOINT [ "/traefik" ] # Metadata LABEL org.opencontainers.image.vendor="Traefik Labs" \ org.opencontainers.image.url="https://traefik.io" \ org.opencontainers.image.source="https://github.com/traefik/traefik" \ org.opencontainers.image.title="Traefik" \ org.opencontainers.image.description="A modern reverse-proxy" \ org.opencontainers.image.version=$env:VERSION \ org.opencontainers.image.documentation="https://docs.traefik.io"
Because of that I also had to update the related docker-compose section of docker-compose.override.yml
file:
traefik: isolation: ${ISOLATION} image: ${REGISTRY}traefik:${TRAEFIK_VERSION}-servercore-${EXTERNAL_IMAGE_TAG_SUFFIX} build: context: ../../docker/build/traefik args: IMAGE_OS: ${EXTERNAL_IMAGE_TAG_SUFFIX} VERSION: ${TRAEFIK_VERSION} volumes: - ../../docker/traefik:C:/etc/traefik depends_on: - rendering
What I want to pay attention here – I am now using ${ISOLATION}
as the rest of the containers are using instead of dedicated TRAEFIK_ISOLATION
which can now be removed from .env.
Another thing is that I am passing fully parametrized image name:
image: ${REGISTRY}traefik:${TRAEFIK_VERSION}-servercore-${EXTERNAL_IMAGE_TAG_SUFFIX}
I intentionally do not prefix it with ${COMPOSE_PROJECT_NAME}
so that this image becomes reusable between several solutions on the same machine, which saves some disk drive space.
Last step would be adding .env
file parameter TRAEFIK_VERSION=v2.9.8
and removing TRAEFIK_IMAGE
parameter which is no longer needed. Good to go!
Verdict
I tested all of the important features of the platform, including Experience Editor and it all works, and what is especially important – works impressively fast with the Process isolation mode. And since all the containers are built with ltsc2022 and run in Process isolation, one doesn’t need Hyper-V at all!
As for me, I ended up having a nice and powerful Windows 11 laptop suitable for modern Sitecore headless operations with a minimum overhead due to the Process isoolation.
Enjoy faster development!