Comment installer Sitecore Storefront 10 avec Docker

Spoiler: C’était pas facile !

This article in english

A partir de la version 9 de Sitecore, il a été possible d’installer Sitecore XP et XC sur Docker. L’installation n’était pas simple et nécessitait beaucoup de patience et une très bonne compréhension du fonctionnement de Docker et de la manière dont les différentes parties de Sitecore interagissent les unes avec les autres. Lorsque Sitecore 10 est sorti en Aout, il y avait beaucoup de scripts et de documentations afin de faciliter l’installation de XP et XC sur Docker. Et en effet, l’installation de Sitecore XP était vraiment simple et une fois que vous avez installé localement Docker et .Net 3.1, il s’agissait de:

  • Télécharger et décompresser le bon package depuis les téléchargements Sitecore
  • Editer le fichier d’environnement .env et placer les valeurs correctes selon le guide d’installation
  • Exécuter la commande de lancement “docker-compose up -d

Je m’attendais à ce que l’installation de Sitecore XC 10 soit aussi simple que Sitecore XP 10, mais j’avais tort. Il m’a fallu des jours pour comprendre ce qui devait être corrigé pour que la boutique en ligne Storefront fonctionne sur mon environnement. Dans cet article, je vais vous expliquer le processus d’installation, et en particulier les erreurs et les défis auxquels j’ai été confronté.

Télécharger le SDK Sitecore Commerce Containers

Connectez vous sur dev.sitecore.com et téléchargez le Sitecore Commerce Containers SDK.

Décompressez-le dans un dossier vide.

Vous verrez les dossiers suivants:

Folder nameDescription
k8s-commerce-xc1Contient les fichiers requis pour une
topologie de déploiement Kubernetes XC1
scriptsContient un ensemble de scripts de prise en charge et de fichiers JSON, fournis à titre d’exemples, qui facilitent la création du conteneur d’images Sitecore Experience Commerce à l’aide de Docker.
Contient également un fichier README décrivant l’objectif de chaque script.
xc0Contient les fichiers utilisés pour créer et exécuter Sitecore XC
dans une topologie XC0, pour le déploiement de Commerce Engine uniquement.
La topologie XC0 pour le poste de travail développeur n’inclut pas les images de conteneur pour le SXA Storefront ou ses modules.
Pour un déploiement qui inclut les modules requis pour prendre en charge le Storefront SXA, vous devez installer la topologie XC1-CXA.
xc1Contient les fichiers utilisés pour créer la topologie Sitecore XC1.
La topologie XC1 est destinée à un déploiement multiple (“scaled”) qui
exclut les modules prenant en charge SXA Storefront.
Vous utilisez cette topologie dans un deploiment multiple utilisant Commerce Engine et n’utilisant pas le SXA Storefront.
Le SDK Sitecore Commerce Container n’inclus pas tous les fichiers YAML de Docker requis pour déployer les images de conteneur de la topologie XC1.
xc1-cxaContient les fichiers nécessaires pour créer et exécuter une instance Sitecore XC dans une topologie XC1.
Cette topologie de déploiement inclut SXA Storefront.
xc-commonContient les fichiers nécessaires pour créer des images Sitecore XC communes.
Les images communes sont utilisées par toutes les topologies Sitecore XC.

Comme je souhaite installer SXA Storefront, je dois installer la topologie XC1-CXA.

Configuration des paramètres

À l’aide du Guide d’installation pour Developer Workstation avec conteneurs, vous pouvez remplir les variables vides dans le fichier .env et générer les certificats TLS / HTTPS.

N’oubliez pas de créer un environnement sandbox dans Braintree et de signaler votre MerchantId, clé publique et privée dans .env

SITECORE_LICENSE est la valeur Base64 de la licence XML compressée. Vous pouvez simplement exécuter la commande suivante, la valeur sera définie correctement:

Set-DockerComposeEnvFileVariable "SITECORE_LICENSE" -Value (ConvertTo-CompressedBase64String -Path "%%PATH_To_license.xml%%")

Ajoutez ces nouvelles lignes au fichier hosts de Windows:

127.0.0.1 xc1cm.localhost 
 127.0.0.1 xc1cd.localhost 
 127.0.0.1 bizfx.localhost 
 127.0.0.1 authoring.localhost 
 127.0.0.1 shops.localhost 
 127.0.0.1 minions.localhost 
 127.0.0.1 ops.localhost

Bon, ca devrait être tout, non ? C’est parti !

Selon le guide d’installation, tout ce que nous devons faire maintenant est

docker-compose up --detach

et notre XC1 devrait bien démarrer … Eh bien, comme vous pouvez le deviner maintenant, ce n’était pas le cas. J’ai reçu le message d’erreur suivant:

ERROR: for xc1-cxa_bizfx_1 Cannot start service bizfx: container xxx encountered an error during hcsshim::System::CreateProcess: failure in a Windows system call: The password for this account has expired. (0x532)
 yadayadayada
 extra info: {yadayadayada, "User":"commerce_admin", blablabla}

bizfx est une image docker que nous obtenons de la source officielle du site (scr.sitecore.com/sxc/sitecore-xc-bizfx:10.0.0-ltsc2019), donc si cette image a un problème avec le mot de passe d’un compte, alors la seule façon de corriger cela est de créer notre propre image bizfx et de s’assurer que les mots de passe du compte n’expirent pas.

FichierDescription
ContainerBuild.ps1Script utilisé pour créer des images de conteneur basées sur le
contenu des fichiers docker-compose.build.yml.
Les résultats sont des images de conteneurs avec la balise “latest”.
PrepContainerBuild.ps1Script qui utilise Sitecore Experience Commerce
Release artefacts du package et les inclus dans
la structure du répertoire du code source.
WDPMapping.jsonFichier utilisé par le script PrepContainerBuild.ps1.
Ce fichier contient des informations de mappage utilisées
pour placer le contenu des artefacts du package
à l’emplacement correct à utiliser lors de l’exécution de la
commande de construction docker-compose.

Dans le répertoire xc-common, vous trouverez les fichiers Dockerfiles. Les deux fichiers à changer sont:

xc-common/bizfx/Dockerfile

Apres la command SHELL à la ligne 15, ajoutez:

RUN Set-LocalUser -Name "commerce_admin" -PasswordNeverExpires $true

xc-common/engine/Dockerfile

Ce fichier essaye de récupérer le LogMonitor.exe depuis une source qui ne fonctionne plus. Vous devez remplacer la ligne 12 par la suivante:

ADD https://github.com/microsoft/windows-container-tools/releases/download/v1.1/LogMonitor.exe .\LogMonitor\LogMonitor.exe

Pour exécuter le script ContainerBuild.ps1, vous devez télécharger tous les fichiers WDP nécéssaires depuis dev.sitecore.net. Téléchargez Packages for On Premise WDP 2020.08-6.0.238 et décompressez ce fichier par example dans c:\src\downloads

Copiez les scripts ContainerBuild.ps1, PrepContainerBuild.ps1 et WDPMapping.json un dossier plus haut, afin qu’ils soient au même niveau que les dossiers xc1-cxa et xc-common. Vous pouvez en fait supprimer les dossiers xc0, xc1 et k8s-commerce-xc1 (sinon vous allez créer des images inutiles).

Executez la commande suivante dans une console Powershell en tant qu’administrateur:

.\PrepContainerBuild.ps1 -releaseZipPath 'C:\src\downloads'

Ce scripte va créer les dossiers wdp/dacpac nécéssaires dans les fichiers build pour toutes les images. Vérifiez que vous avec maintenant la structure de fichiers suivante:

Vous pouvez maintenant créer les images de docker. Comme je voulais juste créer des images bizfx, j’ai copié le fichier de script ContainerBuild.ps1 dans le dossier xc-common, changé de répertoire dans ce dossier et exécuté

.\ContainerBuild.ps1 -envRootPath (Join-Path $PWD ".")

La commande “docker images” me montre les images créées

Pour utiliser votre image sitecore-xc-bizfx image, et non celle par défaut, vous devez dire a Docker de prendre sitecore-xc-bizfx:latest al lieu de ${XC_SITECORE_DOCKER_REGISTRY}sitecore-xc-bizfx:${XC_PACKAGES_TAG}

Pour faire cela, créez simplement un fichier docker-compose.override.yml dans le répertoire xc1-cxa. Ce fichier contient:

version: "2.4"
services:
  bizfx:
    image: sitecore-xc-bizfx:latest

MAINTENANT on peut ouvrir un fenêtre Powershell en tant qu’administrateur, aller dans le répertoire xc1-cxa et executer

docker-compose up -d

Le résultat est maintenant correct

Il ne reste plus qu’a suivre les taches post-deploiement (chapitre 4 du guide d’installation “Installation guide for a Commerce Developer Workstation with Container”) et votre environement est prêt !

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 )

Google photo

You are commenting using your Google 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: