Logique de démarrage du conteneur Docker pour HCL Commerce Version 9.1

Lorsque vous déployez un conteneur à partir d'une image fournie par HCL, un script d'assistance Entrypoint.sh détermine les configurations à utiliser lors du démarrage du conteneur. Examinez les informations suivantes pour connaître ce que fait le script d'aide et comment vous pouvez personnaliser les configurations.

En comprenant le processus de démarrage de ces conteneurs Docker, vous pouvez apprendre à personnaliser les configurations pour répondre à vos besoins et à vous intégrer à votre infrastructure de conteneurs pour soutenir votre environnement de production. Ces informations sont également importantes si vous choisissez de créer un pipeline (IC/CD) continuous integration and continuous deployment pour rationaliser le processus de déploiement. Votre pipeline doit être en mesure de récupérer ces valeurs de configuration d'environnement et de transmettre les valeurs à chaque conteneur Docker démarré.

Documents d'aide au démarrage de conteneurs Docker local

Vous pouvez accéder à des documents d'aide rapides sur la machine où les images Docker sont chargées. Pour plus d'informations, voir Accès à l'aide de l'image Docker. Continuez la lecture pour obtenir des informations plus complètes de la logique de démarrage et d'apprendre à personnaliser vos conteneurs.

Configurations par défaut de HCL Commerce

Les images Docker fournies par HCL ont intégré des configurations par défaut de sorte que vous pouvez déployer rapidement un environnement d'exécution en effectuant uniquement des modifications minimales à l'image Docker. Si vous n'utilisez pas les noms d'hôtes de conteneur Docker par défaut ou les informations de base de données, assurez-vous de transmettre les paramètres nécessaires lors du démarrage du conteneur. Tout d'abord, voici les valeurs de configuration par défaut.
  • Chaque conteneur Docker HCL Commerce est configuré pour utiliser un nom d'hôte spécifique et un certificat par défaut pour se connecter à d'autres conteneurs. Il existe une logique de vérification stricte pour vérifier si le nom d'hôte utilisé dans une requête est le même que le SubjectAlternativeName dans le certificat du conteneur cible. Si vous déployez des conteneurs et spécifiez différents noms d'hôte, la connexion échoue à moins que vous reconfiguriez les certificats internes.
    Image Docker Nom d'hôte par défaut
    commerce/crs-app store
    commerce/search-app search
    commerce/xc-app xc
    commerce/ts-app app
    commerce/ts-web web
    commerce/ts-db
    Remarque : Cela suppose que vous exécutez un conteneur Docker Db2.
    db
    commerce/tooling-web tooling-web
    commerce/store-web store-web
    HCL Commerce Version 9.1.9.0 or latercommerce/graphql-app graphql
    HCL Commerce Version 9.1.12.0 or latercommerce/approval-app approbation
    HCL Commerce Version 9.1.13.0 or latercommerce/nextjs-store-app nextjs-store
    commerce/search-nifi-app nifi
    commerce/search-query-app
    • query pour le service de requêtes du magasin
    • data-query pour le service de requête d'entreprise
    commerce/search-registry-app registry
    commerce/search-ingest-app ingest
    docker.elastic.co/elasticsearch/elasticsearch elasticsearch
    bitnami/zookeeper zookeeper
    HCL Commerce Version 9.1.3.0 or laterredis redis
    HCL Commerce Version 9.1.12.0 or laterpostgres postgresql
    Si vous n'utilisez pas les noms d'hôte par défaut de la table, vous devez mettre à jour le SubjectAlternativeName dans vos certificats. Pour plus d'informations, voir Gestion manuelle des certificats.
  • Configurations de base de données par défaut. Les images Docker sont préconfigurées pour se connecter à une base de données avec les informations d'identification suivantes.
    Paramètres de base de données Valeur
    Type de base de données (dbType) db2
    JNDI
    • Pour le serveur de transactions :
      jdbc/WCDataSource
    • Pour le serveur de recherche :
      jdbc/wcdb
    Nom d'instance de la base de données (dbName) mall
    Utilisateur de base de données (dbUser) wcs
    Mot de passe utilisateur de la base de données (dbUserPass) ccl1
    Hôte de la base de données (dbHost) db
    Port de la base de données (dbPort) 50000
    Si vous avez créé une instance de base de données avec les valeurs par défaut, vous n'avez pas à mettre à jour la configuration de la source de données dans les images Docker. Vous pouvez utiliser les valeurs par défaut dans un environnement de test local, mais pour des raisons de sécurité, vous ne souhaitez pas utiliser les valeurs par défaut dans un environnement de production. Pour plus d'informations sur la modification des connexions de base de données dans vos images, voir Génération d'images Docker personnalisées à utiliser avec une base de données Oracle.

Diagramme de flux de démarrage Docker

Le diagramme suivant illustre la logique et les commandes sous-jacentes qui s'exécutent lorsque vous démarrez un conteneur. HCL définit un script unique /SETUP/bin/entrypoint.sh comme l'image Docker ENTRYPOINT pour spécifier les commandes et configurations de démarrage. Pour plus d'informations sur ENTRYPOINT, voir Dockerfile ENTRYPOINT. Le diagramme suivant est une représentation visuelle de la logique de démarrage.
Image d'Entrypoint.sh
  1. entrypoint.sh vérifie d'abord l'acceptation de la licence. Tous les conteneurs nécessitent que LICENSE=accept soit transféré afin de démarrer.
  2. Si vous devez définir des configurations personnalisées avant le démarrage de la logique HCL, vous pouvez créer un script preConfigure.sh et l'enregistrer dans le répertoire /SETUP/bin/ de l'image Docker. Par exemple, si vous souhaitez récupérer des paires clé-valeur à partir d'un centre de gestion de configuration distant autre que Vault, vous devez personnaliser le script /SETUP/bin/preConfigure.sh pour vous connecter à votre centre de gestion de configuration.
  3. Déterminez comment passer les paramètres de démarrage Docker.
    1. Si vous n'utilisez pas Vault, vous pouvez spécifier CONFIGURE_MODE=EnvVariables. Cela déclenche le script /SETUP/bin/envVariablesConfigure.sh et extrait les paramètres des variables de l'environnement du conteneur.
    2. Les images HCL Commerce Docker sont configurées pour prendre en charge Vault en tant que centre de gestion de configuration. Si vous définissez vos paramètres dans Vault, vous pouvez spécifier CONFIGURE_MODE=Vault. Cela déclenche le script /SETUP/bin/vaultConfigure.sh qui peut extraire des paramètres de Vault tant que vous fournissez les VAULT_TOKEN et VAULT_URL.
      • Le script a besoin que le nom d'hôte de chaque service Docker contienne les valeurs <TENANT>/<ENVIRONMENT>/<ENVTYPE>/<TARGET_KEY> et les données de configuration liées à l'environnement doivent être organisées comme <TENANT>/<ENVIRONMENT>/<ENVTYPE>/<TARGET_KEY>. Pour plus d'informations sur l'organisation de vos données dans Vault, voir Données d'environnement dans Vault.
      • Cette méthode est conçue pour prendre en charge les environnements multi-titulaires sur les plates-formes d'orchestration Docker. Il est mieux utilisé dans un pipeline CI/CD où vous avez la possibilité de résoudre les paramètres TENANT, ENVIRONMENT, ENVTYPE et STOREWEB_HOST.
      • Cette méthode suit un modèle fixe pour définir le nom d'hôte de chaque conteneur pendant le démarrage du conteneur. Par exemple, le nom de l'hôte du conteneur du serveur de transactions est défini comme <TENANT><ENVIRONMENT><ENVTYPE>tsapp.<DOMAIN-NAME>
    3. Si vous souhaitez déployer rapidement un environnement avec un minimum de modifications, vous pouvez omettre le paramètre CONFIGURE_MODE et spécifier des valeurs en tant que variables d'environnement de conteneur. Cette méthode ne prend en charge que certains paramètres, de sorte que la personnalisation est limitée dans ce mode.

    En outre, si vous avez configuré Vault en tant qu'autorité de certificat avec un back-end PKI, alors vous pouvez également passer VAULT_CA=true. Cela déclenche le script /SETUP/bin/updateCerts.sh pour configurer la certification interne entre les conteneurs Docker. Pour plus d'informations, voir Gestion des certificats avec Vault.

  4. Ensuite, le point d'entrée déclenche le script /SETUP/bin/custConfiguration.sh, ce qui permet un autre point de personnalisation où vous pouvez personnaliser n'importe quel aspect de la logique de démarrage du conteneur Docker.
    • Si vous traitez des certificats localement et n'utilisez pas Vault, vous pouvez définir vos informations de certificat dans un fichier JSON et les enregistrer dans /SETUP/certs/custom. Le script /SETUP/bin/updateLocalCerts.sh effectue une recherche dans le répertoire /SETUP/certs/custom et charge l'ensemble des fichiers JSON. Pour plus d'informations, voir Gestion manuelle des certificats.
    • Si vous souhaitez personnaliser les scripts logiques de démarrage, vous pouvez créer un script /SETUP/bin/custConfiguration.sh pour inclure votre propre logique. Il s'agit du dernier script à s'exécuter pendant le démarrage du conteneur. Toutes les configurations que vous spécifiez dans custConfiguration.sh remplacent toutes les configurations des scripts précédents. Par exemple, si les scripts /SETUP/bin/vaultConfigure.sh, /SETUP/bin/envVariablesConfigure.sh ou /SETUP/bin/updateLocalCerts.sh ne répondent pas à vos exigences, il est recommandé d'utiliser ces scripts comme point de départ. Suivez le même squelette et mettez à jour ou ajoutez n'importe quelle logique personnalisée dans le script postConfiguration.sh.
Conseil : Pour ajouter l'un de vos fichiers personnalisés à l'image Docker (preConfigure.sh, custConfiguration.sh, *.json), créez un Dockerfile et définissez une instruction COPY pour copier le fichier dans le nouvel emplacement cible de l'image Docker. Utilisez ensuite Dockerfile pour créer une image Docker personnalisée.

Affichage des informations sur l'aide et la licence

Vous pouvez exécuter les commandes suivantes sans démarrer le conteneur.
  • Lister les informations d'utilisation de base.
    docker run -it -e LICENSE=accept <Docker image> help 
  • Afficher les conditions et les contrats de licence en anglais.
    docker run -it -e LICENSE=accept <Docker image> LicenseView
  • Afficher les termes et accords de licence dans d'autres langues.
    docker run -it -e LICENSE=accept -e lang=<cs|el|es|in|ja|lt|pt|sl|zh|de|en|fr|it|ko|pl|ru|tr|zh_TW> <Docker image> LicenseView
Vous pouvez également lire le script /SETUP/bin/entrypoint.sh pour comprendre la logique de démarrage.

Démarrage des conteneurs avec différentes options de configuration

Chaque conteneur Docker HCL Commerce a ses propres paramètres obligatoires que vous devez fournir pour faire démarrer le conteneur. Il existe également des paramètres facultatifs que vous pouvez spécifier pour personnaliser davantage votre conteneur. Pour plus d'informations, voir les rubriques suivantes.