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 dockerbuildtraefik 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!