Docker: Comment déboguer et choisir le bon tag.

This article in english

Avec la sortie de Sitecore XP 10 cet été, Docker est désormais un très bon environnement pour développer et tester des projets sitecore. Il y a certainement beaucoup de documentation, mais je suis toujours un peu incertain sur la façon de déboguer un conteneur docker pendant qu’il se construit. Choisir le bon tag pour mes images n’était pas non plus anodin.

Dans cet article, je vais vous montrer un moyen de déboguer les conteneurs lors du processus de création, et nous expliquerons comment choisir le meilleur tag pour les images de base de docker.

Déboguer les conteneurs Dockers

Lorsqu’une image est créée avec la commande «docker-compose build» ou «docker build», chaque étape du Dockerfile est exécutée dans un conteneur. Le conteneur de la première étape est créé à partir de l’image spécifiée dans la ligne du Dockerfile commençant par “FROM”. À la fin de chaque étape, le conteneur est sauvegardé dans une nouvelle image et l’étape suivante utilise cette dernière image.

Dans cet exemple, nous pouvons voir que le premier conteneur provient de l’image dans BUILD_IMAGE et crée une image temporaire avec le nom aacfb83b6569.

L’étape suivante (4/16) consiste à résoudre l’argument BUILD_CONFIGURATION. Ceci est exécuté dans le conteneur intermédiaire e91c4f2f052d, qui est supprimé directement après et une nouvelle image 06bdcf447558 est créée, et ainsi de suite …

La commande build utilise le cache des images, donc si une étape a déjà été exécutée dans le passé, cette étape ne sera pas executée et l’image résultante sera extraite du cache.

Imaginez maintenant que pour une raison quelconque, la séquence de construction provoque une erreur. Comme la construction se fait dans des conteneurs temporaires, nous voudrions pouvoir jeter un coup d’œil à l’intérieur de ce conteneur afin d’exécuter la même commande et peut-être obtenir plus d’informations sur l’erreur. C’est en fait assez simple.

Imaginons que votre build ait échoué comme celui de l’image suivante.

La dernière étape (Step 10/15) a été exécutée dans un conteneur temporaire appelé 74e55016dd17(“—–> Running in 74e55016dd17”).

Vous devez tout d’abord résoudre (“commit”) ce conteneur temporaire dans une image executable. Cela se fait grâce a la commande suivante:

docker commit 74e55016dd17 myimagename

Ensuite, vous devez exécuter cette image pour obtenir un nouveau conteneur avec lequel déboguer. Le dernier paramètre est le programme que vous souhaitez utiliser, par exemple powershell ou sh. À l’étape 5/15, nous pouvons voir que ce Dockerfile utilise Powershell, je vais donc également ouvrir un PowerShell dans ce conteneur.

docker run -ti --rm myimagename powershell

Le conteneur s’ouvre dans une console PowerShell, vous donnant la possibilité de reproduire l’étape qui a fait une erreur et d’obtenir plus d’informations. Bien sûr, vous pouvez parcourir les fichiers ou vérifier les variables d’environnement à l’intérieur du conteneur. Ici, je peux voir que je n’ai pas de fichiers source sous \build\src.

Choisissez le bon Tag

Comme vous l’avez peut-être vu dans le fichier .env, toutes les images que nous téléchargeons à partir de nos sources ont un tag associée. Par exemple:

SOLUTION_BASE_IMAGE=mcr.microsoft.com/windows/nanoserver:1809

Cela signifie que nous allons obtenir l’image mcr.microsoft.com/windows/nanoserver associée au tag “1809”.

Ces noms d’image et ces tags peuvent être configurés à la fois dans les fichiers docker-compose.yml et .env. Prenez la définition de l’image du CD dans le projet Helix-basic-aspnetcore.

Dans docker-compose.yml, lors de la définition du service cd, nous avons la ligne suivante:

image: ${SITECORE_DOCKER_REGISTRY}sitecore-xm1-cd:${SITECORE_VERSION}

et dans .env:

SITECORE_DOCKER_REGISTRY=scr.sitecore.com/sxp/
SITECORE_VERSION=10.0.0-ltsc2019

En combinant ces deux informations, nous construisons l’image de base pour le service cd:

scr.sitecore.com/sxp/sitecore-xm1-cd:10.0.0-ltsc2019

Le tag ici est “10.0.0-ltsc2019” pour la topologie xm1.

Ce tag particulier est composé de la version de sitecore (“10.0.0”) et de la version Windows (ltsc2019), également connue sous le nom de “TargetOS”.

Vous pouvez trouver le numéro de votre version de Windows en exécutant la commande suivante dans Powershell

(Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ReleaseId).ReleaseId

Vous obtiendrez une valeur entière (1803, 1809, 1903, 1909, 2004, 2009) correspondant à votre version de Windows. 1809 est également connu sous le nom de «ltsc2019» et 2009 est également connu sous le nom de «20H2».

Pour voir quel tag est possible pour une image spécifique, vous devrez vérifier sur la page de description de cette image. Voici les images les plus intéressantes dont vous aurez besoin pour une installation de Sitecore dans Docker:

Sitecore Tags

Traefik Tags

Microsoft Windows Servercore

Microsoft Windows Nanoserver

Que le Tag soit avec vous !

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: