Sitecore sur Docker : problèmes courants que vous pouvez rencontrer
L’exécution de Sitecore sur Docker (entièrement pris en charge) est relativement nouvelle (à partir de version 10.0+), et il existe une documentation fantastique disponible sur Internet pour commencer.
L’objectif de cet article n’est pas de re-documenter les étapes d’installation, mais de couvrir les problèmes moins documentés que vous pouvez rencontrer lors de l’installation (et après) avec vos conteneurs Sitecore Docker. Personnellement, j’ai rencontré de nombreux problèmes lors du démarrage local. C’était un peu décourageant pour être honnête, mais après avoir traversé les mauvaises herbes, les avantages ont commencé à montrer leurs vraies couleurs. Si je peux aider à soulager ces « mauvaises herbes », ce message aura atteint son objectif !
Remarque : Il existe différents scénarios et problèmes que vous pouvez rencontrer en fonction de votre version de Sitecore, du système d’exploitation de la station de travail du développeur, de la topologie sélectionnée, etc. Par souci de simplicité et de concentration (et sans essayer de résoudre tous les problèmes du monde), nous nous concentrerons sur Docker – problèmes liés rencontrés lors de l’installation et de l’exécution de Sitecore 10.2 XP0 sous Windows 10.
Si vous avez besoin d’un récapitulatif du processus d’installation, voici Documentation de Sitecore pour la configuration avec des conteneurs Docker.
Problèmes que j’ai rencontrés lors de l’installation/de l’exécution de Sitecore sur Docker
Indice
CoreContainer n’est pas initialisé ou s’arrête
Ce problème s’est manifesté avec des erreurs liées à l’incapacité de Solr à se connecter à ZooKeeper
Exemples de journaux :
javax.servlet.UnavailableException: Error processing the request. CoreContainer is either not initialized or shutting down. ERROR (main) [ ] o.a.s.s.SolrDispatchFilter Could not start Solr. Check solr/home property and the logs ERROR (main) [ ] o.a.s.c.SolrCore null:org.apache.solr.common.SolrException: java.util.concurrent.TimeoutException: Could not connect to ZooKeeper localhost:9983 within 30000 ms
De plus, le tableau de bord Solr afficherait cette erreur dans le navigateur Web :
HTTP ERROR 404 javax.servlet.UnavailableException: Error processing the request. CoreContainer is either not initialized or shutting down. URI: /solr/ STATUS: 404 MESSAGE: javax.servlet.UnavailableException: Error processing the request. CoreContainer is either not initialized or shutting down. SERVLET: default CAUSED BY: javax.servlet.ServletException: javax.servlet.UnavailableException: Error processing the request. CoreContainer is either not initialized or shutting down. CAUSED BY: javax.servlet.UnavailableException: Error processing the request. CoreContainer is either not initialized or shutting down.
Choses que vous pouvez essayer :
- Redémarrez votre conteneur Docker pour Solr. Si le conteneur apparaît, essayez d’accéder à votre tableau de bord Solr dans le navigateur. Si le problème est résolu, il ne devrait pas y avoir d’erreur.
- Essayez un redémarrage docker-compose
- Lors de l’exécution des exemples « MyProject » de Sitecore, ce qui précède n’a pas fonctionné pour moi. Cela dit, j’ai essayé de supprimer mes fichiers source et de repartir de zéro. Pour une raison ou une autre, le problème n’est pas revenu après cela. Peut-être qu’un paramètre de configuration ou une valeur d’installation a été modifié depuis ma première installation.
Impossible de trouver un paramètre correspondant au nom de paramètre « AllowPrerelease »
Cela peut signifier que votre module PowerShellGet doit être mis à jour
Essayez d’exécuter :
Update-Module PowerShellGet -Force
Si vous obtenez : « Le module ‘PowerShellGet’ n’a pas été installé à l’aide d’Install-Module »
Essayez ensuite d’exécuter :
Install-Module PowerShellGet -Force
Impossible de démarrer le service
J’ai commencé à recevoir cette erreur au hasard après avoir installé les mises à jour Windows et redémarré mon PC. Docker-compose up -d entraînerait plusieurs « ERREUR … Impossible de démarrer le service pour ____ »
Qu’est-ce qui a fonctionné et qu’est-ce qui est bon pour le dépannage par défaut/de secours :
Dans Powershell, exécutez « docker-compose down » pour supprimer les conteneurs et les paramètres réseau. Après cela, reconstruisez vos conteneurs avec « docker-compose up -d »
Le conteneur ne peut pas se connecter à SQL Server
Vous pouvez voir des erreurs génériques « le conteneur n’est pas sain » dans vos journaux Traefik, mais vous pouvez également voir des erreurs plus spécifiques liées à la connectivité à SQL dans les journaux Xdb et Cortex. Comme:
ERR Health check "marketing automation sql" completed after 691.437ms with status Unhealthy and '"Error message: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)"'
Assurez-vous que le port 14330 est disponible. Vous pouvez également exécuter une commande dans Powershell pour vérifier la connectivité de votre conteneur au port comme ceci :
docker run --rm mcr.microsoft.com/windows/servercore:1903 powershell -Command echo ((new-object Net.Sockets.TcpClient).Client.Connect('127.0.0.1', 14330)) 'success'
Les modifications ne sont pas reflétées après les builds/déploiements
J’ai rencontré un scénario où les changements de configuration et les changements de code n’étaient pas reflétés dans mon site hôte de rendu. Les builds et les publications ont réussi sans erreur, mais sans changement.
Quel était mon problème : l’image sitecore-docker-tools-assets manquait dans Docker, donc les scripts de déploiement n’étaient pas disponibles et en cours d’exécution… J’ai dû télécharger la ou les images docker depuis https://github.com/Sitecore/ docker-tools/, passez à la branche spécifique à la version 10.2 à ce moment-là et exécutez la commande docker-compose build.
Qu’est-ce que cela pourrait aussi être : Vous pourriez voir une erreur dans vos journaux comme, « Impossible de copier… en cours d’utilisation par un autre processus. » J’avais parfois un problème où je devais arrêter mes conteneurs avant d’effectuer une génération/publication dans Visual Studio. C’est parce que Docker avait un verrou sur les fichiers accessibles par VS, ce qui a provoqué une collision. Une fois la construction terminée, j’ai démarré les conteneurs et tout a été déployé. Bien sûr, ce n’est pas un flux de travail idéal et était extrêmement irritant. Le correctif pour ce problème devra être un message pour un autre jour !
Une erreur s’est produite lors du POST vers l’hôte de rendu à distance JSS-Render
Cette erreur s’est produite lors de la tentative d’ouverture de mon site ASP.NET Core sans tête avec Experience Editor. J’utilisais l’exemple de projet ASP.NET Core Rendering Host de Sitecore.
Les erreurs dans les journaux peuvent ressembler à :
Error occurred during POST to remote rendering host "rendering/jss-render" Error Rendering Sitecore.JavaScriptServices.ViewEngine.Presentation.JsLayoutRenderer: The remote server returned an error: (404) Not Found.
Heureusement, j’ai pu trouver ce même problème signalé (et résolu) par Rob Earlam. Découvrez son message, « Hôte de rendu .NET Core – Erreur 404 de l’éditeur d’expérience.”
Pour résumer, il y avait deux variables d’environnement que je devais ajouter à mon hôte de rendu dans le fichier docker-compose.override.yml.
Sitecore__RenderingHostUri: "https://${RENDERING_HOST}" Sitecore__EnableExperienceEditor: "true"
Plusieurs commandes Powershell non reconnues
Pour une raison ou une autre, les commandes personnalisées PS dans Sitecore Docker Tools n’étaient pas reconnues lors de l’exécution de compose-init.ps1.
Ce n’est bien sûr pas la solution idéale, mais pour passer outre sans trop de chichi, j’ai simplement inclus les fichiers ps1 qui contenaient les commandes manquantes. Par exemple, j’ai reçu cette erreur, « Le terme ‘Create-RSAKey’ n’est pas reconnu comme le nom d’une applet de commande. » J’ai trouvé la fonction « Create-RSAKey » dans le fichier « Get-SitecoreSelfSignedCertificate.ps1 ». Ainsi, le simple fait d’inclure ce fichier dans mon compose-init.ps1 a rendu la fonction disponible.
Vous pouvez l’inclure comme ceci :
. "C:\<your-folder-path>\Get-SitecoreSelfSignedCertificate.ps1"
Répétez cette opération si nécessaire pour toutes les autres commandes manquantes.
Le nom distant n’a pas pu être résolu
J’ai rencontré ce problème dans Powershell lorsque docker-compose essayait de contacter api.nuget.org pour télécharger des packages. Je pense que cela peut généralement se produire lorsque vos conteneurs doivent accéder à Internet.
Sitecore propose une documentation utile à ce sujet : https://doc.sitecore.com/xp/en/developers/100/developer-tools/troubleshooting-docker.html#windows-containers-cannot-access-the-internet_body
Ils suggèrent d’exécuter une commande PS pour mettre à jour la valeur InterfaceMetric de votre carte réseau active. Essayez ceci, cela devrait fonctionner. Malheureusement pour moi, j’ai rencontré un problème d’autorisations où cela n’était pas autorisé sur mon PC. Accès refusé.
Ce qui a fonctionné : je travaillais sur le Wi-Fi, mais mon InterfaceMetric pour la connexion active n’était pas la connexion avec la métrique la plus basse. Ce que j’ai fini par faire, c’est de brancher un câble Ethernet à mon PC. Heureusement, ma connexion maintenant active avait la métrique la plus basse avec l’adaptateur Ethernet. Cela a fonctionné maintenant! (Je suis retourné au Wi-Fi après cette étape.)
À la fin – Choses par défaut / de secours à essayer
Vous trouverez des problèmes qui ne sont pas dans ce post, ou vous n’aurez peut-être pas de chance avec mes suggestions. Cela étant, il y a certaines choses que vous pouvez toujours essayer quand rien d’autre ne le fait. Parfois, ils font l’affaire.
- Redémarrer les conteneurs – Parfois, le redémarrage d’un conteneur corrigera les services ou les problèmes qui se produisent dans ce conteneur. Vous pouvez redémarrer un conteneur en exécutant cette commande : docker restart
- « Down » puis « Up » – Parfois, les données sont obsolètes/mises en cache/corrompues dans les conteneurs et doivent être purgées. Exécutez la commande « docker-compose down » pour supprimer les conteneurs. Faites un suivi en les reconstruisant avec « docker-compose up -d »
- Si vous ne souhaitez pas purger tous les conteneurs, vous pouvez « avaler » un seul conteneur. Pour ce faire, exécutez :
- docker stop
#vous devez d’abord arrêter le conteneur - docker rm
# supprime le conteneur - docker-compose up -d #reconstruit les conteneurs qui ne sont pas à jour
- docker stop
- Si vous ne souhaitez pas purger tous les conteneurs, vous pouvez « avaler » un seul conteneur. Pour ce faire, exécutez :
- Exécutez « docker-compose up -d » – Parfois, une configuration ou un paramètre requis est supprimé. L’exécution de up-d reconstruira vos conteneurs comme spécifié dans vos configurations docker-compose.
- Arrêtez IIS – iisreset /stop – Vous rencontrerez plusieurs scénarios dans lesquels vous ne pouvez pas exécuter IIS (comme une collision de ports.)
- Journaux – Vérifiez les journaux de vos différents conteneurs. Vérifiez également les journaux de votre moteur Docker (démon) – C:\Users\%USERNAME%\AppData\Local\Docker
- Redémarrez Docker Desktop – Vous pouvez redémarrer à partir de l’icône « baleine » de Docker dans la barre d’état système de Windows.
- Redémarrage – Parfois, un bon vieux redémarrage fait l’affaire !
J’espère que ce message vous a été utile. Démarrer avec Docker peut parfois être gênant, bien que décourageant, au début, mais ne vous laissez pas arrêter. Les avantages de tirer parti de Docker l’emportent sur les obstacles initiaux !
Si vous souhaitez plus d’informations sur les solutions Sitecore + Docker, nous serions ravis de vous aider.
Contactez-moi sur LinkedIn ou remplissez notre formulaire de contact.
Abonnez-vous à notre résumé hebdomadaire du blog pour recevoir des notifications lorsque chaque partie est publiée et déposer des commentaires ci-dessous avec des questions.
Source link