Linux

Création d'une image Docker personnalisée à partir d'un package déployable

Vous pouvez créer des images Docker personnalisées qui incluent votre code personnalisé ou vos configurations personnalisées, puis partager et déployer les nouvelles images.

HCL Commerce Version 9.1.14.0 or laterImportant: A partir de HCL Commerce 9.1.14.0, les images de conteneurs d'applications sont conçues pour être exécutées par défaut en tant qu'utilisateur non root. Cette modification peut potentiellement faire échouer votre déploiement personnalisé. Vous devez donc passer ce changement et ses impacts potentiels en revue. Pour plus d'informations, voir HCL Commerce utilisateurs et privilèges liés aux conteneurs.
Note: Si vous travaillez sur un environnement d'exécution local à des fins de test, de développement ou de débogage, vous pouvez utiliser une méthode temporaire pour déployer rapidement des modifications dans votre environnement local. Pour plus d'informations, voir Mise à jour d'applications dans des conteneurs Docker en cours d'exécution.

Before you begin

  1. Dans un environnement de développement, créez des packages de personnalisation (ts, store, search, xc) pour inclure votre code personnalisé. Pour plus d'informations, voir Génération de packages.
  2. Téléchargez les packages de personnalisation dans votre environnement d'exécution.

About this task

La procédure suivante décrit comment :
  1. Créez un fichier Dockerfile pour chaque type d'image Docker.
  2. Créez un fichier docker-compose.yml qui fait référence aux fichiers Docker pour créer les nouvelles images.
A la fin de cette procédure, vos répertoires et fichiers se présentent selon la structure suivante :
 +search ++Dockerfile ++CusDeploy +store ++Dockerfile ++CusDeploy +app ++Dockerfile ++CusDeploy +web ++Dockerfile +xc ++Dockerfile ++CusDeploy +db ++Dockerfile +docker-compose.yml

Procedure

  1. Créez des répertoires distincts CusDeploy pour chaque image Docker que vous souhaitez personnaliser.
    Par exemple,
    • /opt/WebSphere/db/CusDeploy
      Note: Cette opération n'est applicable que si vous exécutez votre base de données dans un conteneur Docker.
    • /opt/WebSphere/search/CusDeploy
    • /opt/WebSphere/store/CusDeploy
    • /opt/WebSphere/xc/CusDeploy
    • /opt/WebSphere/app/CusDeploy
    • /opt/WebSphere/web/CusDeploy
  2. Extrayez tous les packages de personnalisation créés à partir de l'utilitaire WCB dans le répertoire approprié.
    Par exemple,
    • Extrayez wcbd-deploy-server-ts-app.zip vers /opt/WebSphere/app/CusDeploy.
    • Extrayez wcbd-deploy-server-crs-app.zip vers /opt/WebSphere/store/CusDeploy.
    • Extrayez wcbd-deploy-server-search-app.zip vers /opt/WebSphere/search/CusDeploy.
    • Extrayez wcbd-deploy-server-xc-app.zip vers /opt/WebSphere/xc/CusDeploy.
    Pour plus d'informations sur la création de packages, voir Génération de packages.
  3. Effectuez les étapes suivantes pour créer ou mettre à jour un fichier Docker afin de générer une nouvelle image Docker search-app.
    1. Créez un fichier Dockerfile dans votre répertoire de recherche.
      Par exemple : /opt/WebSphere/search/Dockerfile
    2. Ajoutez le texte suivant au fichier Dockerfile.
      HCL Commerce Version 9.1.14.0 or later
      FROM <Docker_registry>/commerce/search-app:<source_image_tag> HEALTHCHECK CMD curl -f http://localhost:3737 COPY --chown=comuser:comuser CusDeploy /SETUP/Cus RUN /SETUP/bin/applyCustomization.sh <optional_commands>
      Pour les versions de HCL Commerce 9.1.0.0 à 9.1.13.0 :
      FROM <Docker_registry>/commerce/search-app:<source_image_tag> HEALTHCHECK CMD curl -f http://localhost:3737 COPY CusDeploy /SETUP/Cus RUN /SETUP/bin/applyCustomization.sh <optional_commands>
      Note: L'instruction HEALTHCHECK vérifie l'intégrité de l'application lorsque le conteneur est en cours d'exécution. A mesure que le nombre de conteneurs déployés augmente, vous devrez peut-être augmenter l'intervalle HEALTHCHECK pour éviter les échecs lors de la vérification.
      Docker_registry
      URL du registre Docker où se trouve l'image source.
      source_image_name
      Nom de l'image source. Par exemple, ts-app, ts-web, crs-app, search-app, xc-app.
      source_image_tag
      Balise de l'image source que vous souhaitez utiliser.
      optional_commands
      (Facultatif) Vous pouvez spécifier d'autres commandes pour configurer l'application dans l'image Docker. Elles peuvent inclure des commandes Run Engine ou la création de scripts de démarrage de conteneur. Par exemple, vous pouvez utiliser les commandes Run Engine pour définir la source de données afin que l'application puisse se connecter à votre base de données.
      • L'argument FROM spécifie quelle image Docker de base doit être mise à jour.
      • L'argument RUN fait référence à un script shell qui indique comment appliquer le package de personnalisation à l'image source.
  4. Effectuez les étapes suivantes pour créer ou mettre à jour un fichier Docker afin de générer une nouvelle image Docker crs-app (magasin).
    1. Créez un fichier Dockerfile dans votre répertoire de magasin.
      Par exemple : /opt/WebSphere/store/Dockerfile
    2. Ajoutez le texte suivant au fichier Dockerfile.
      HCL Commerce Version 9.1.14.0 or later
      FROM <Docker_registry>/commerce/crs-app:<source_image_tag> USER root # Using dnf in Ubi8 for package installation RUN dnf install -y nc && dnf clean all USER comuser HEALTHCHECK CMD nc localhost 8080 < /dev/null COPY --chown=comuser:comuser CusDeploy /SETUP/Cus RUN /SETUP/bin/applyCustomization.sh <optional_commands>
      Pour les versions de HCL Commerce 9.1.0.0 à 9.1.13.0 :
      FROM <Docker_registry>/commerce/crs-app:<source_image_tag> # Using yum in RHEL/CentOS for package installation RUN yum install -y nc && yum clean all HEALTHCHECK CMD nc localhost 8080 < /dev/null COPY CusDeploy /SETUP/Cus RUN /SETUP/bin/applyCustomization.sh <optional_commands>
  5. Effectuez les étapes suivantes pour créer ou mettre à jour un fichier Dockerfile afin de générer une nouvelle image Transaction server Docker container ts-app.
    1. Créez un fichier Dockerfile dans votre répertoire d'applications.
      Par exemple : /opt/WebSphere/app/Dockerfile
    2. Ajoutez le texte suivant au fichier Dockerfile.
      HCL Commerce Version 9.1.14.0 or later
      FROM Docker_registry/commerce/ts-app:source_image_tag USER root # Using dnf in UBI8 for package installation RUN dnf install -y nc && dnf clean all USER comuser HEALTHCHECK --retries=10 CMD nc localhost 5080 < /dev/nul COPY --chown=comuser:comuser CusDeploy /SETUP/Cus RUN /SETUP/bin/applyCustomization.sh optional_commands
      Pour les versions de HCL Commerce 9.1.0.0 à 9.1.13.0 :
      FROM Docker_registry/commerce/ts-app:source_image_tag RUN yum install -y nc && yum clean all HEALTHCHECK --retries=10 CMD nc localhost 5080 < /dev/nul COPY CusDeploy /SETUP/Cus RUN /SETUP/bin/applyCustomization.sh optional_commands
  6. Effectuez les étapes suivantes pour créer ou mettre à jour un fichier Docker afin de générer une nouvelle image Docker xc-app (personnalisation).
    1. Créez un fichier Dockerfile dans votre répertoire xc.
      Par exemple : /opt/WebSphere/xc/Dockerfile
    2. Ajoutez le texte suivant au fichier Dockerfile.
      HCL Commerce Version 9.1.14.0 or later
      FROM Docker_registry/commerce/xc-app:source_image_tag USER root # Using dnf in UBI8 for package installation RUN dnf install -y nc && dnf clean all USER comuser COPY --chown=comuser:comuser CusDeploy /SETUP/Cus RUN /SETUP/bin/applyCustomization.sh optional_commands
      Pour les versions de HCL Commerce 9.1.0.0 à 9.1.13.0 :
      FROM Docker_registry/commerce/xc-app:source_image_tag # Using yum in RHEL/CentOS for package installation RUN yum install -y nc && yum clean all COPY CusDeploy /SETUP/Cus RUN /SETUP/bin/applyCustomization.sh optional_commands
  7. Effectuez les étapes suivantes pour créer ou mettre à jour un fichier Docker afin de générer une nouvelle image Docker ts-web (Web).
    1. Créez un fichier Dockerfile dans votre répertoire Web.
      Par exemple : /opt/WebSphere/web/Dockerfile
    2. Ajoutez le texte suivant au fichier Dockerfile.
      HCL Commerce Version 9.1.14.0 or later
      FROM Docker_registry/commerce/ts-web:source_image_tag USER root # Using dnf in UBI8 for package installation RUN dnf install -y nc && dnf clean all USER comuser HEALTHCHECK --interval=10s CMD nc localhost 8000 < /dev/null #If you are using a local store from HCL Commerce Version 8 uncomment the next line. #COPY --chown=comuser:comuser localStoreStaticAsset/ /SETUP/Cus/ optional_commands
      Pour les versions de HCL Commerce 9.1.0.0 à 9.1.13.0 :
      FROM Docker_registry/commerce/ts-web:source_image_tag RUN yum install -y nc && yum clean all HEALTHCHECK --interval=10s CMD nc localhost 8000 < /dev/null #If you are using a local store from HCL Commerce Version 8 uncomment the next line. #COPY localStoreStaticAsset/ /SETUP/Cus/ optional_commands
  8. Effectuez les étapes suivantes pour créer ou mettre à jour un fichier Docker afin de générer une nouvelle image Docker ts-db (base de données).
    Note: Cette opération n'est applicable que si vous exécutez votre base de données dans un conteneur Docker.
    1. Créez un fichier Docker dans votre répertoire db.
      Par exemple : /opt/WebSphere/db/Dockerfile
    2. Ajoutez le texte suivant au fichier Dockerfile.
      FROM Docker_registry/commerce/ts-db:source_image_tag RUN yum install -y netcat && yum clean HEALTHCHECK --interval=20s CMD nc -z localhost 50000 optional_commands
  9. Copiez le fichier docker-compose.yml existant dans le même répertoire que vos répertoires Docker.
    Par exemple, /opt/WebSphere/docker-compose.yml.
  10. Modifiez le fichier docker-compose.yml pour ajouter des paramètres de génération et de contexte.
    Par exemple,
     db: build: context: db image: <docker_registry>/commerce/ts-db:<tag> ... app: build: context: app image: <docker_registry>/commerce/ts-app:<tag> ... search: build: context: search image: <docker_registry>/commerce/search-app:<tag> ... store: build: context: store image: <docker_registry>/commerce/crs-app:<tag> ... web: build: context: web image: <docker_registry>/commerce/ts-web:<tag> ...
  11. Arrêtez et retirez les conteneurs en cours d'exécution.
    Vous pouvez par exemple exécuter la commande suivante :
    docker-compose -f docker-compose.yml rm
  12. Exécutez la commande suivante pour créer les nouvelles images.
    docker-compose -f docker-compose.yml build
    Note: Si vous souhaitez créer et déployer les conteneurs à l'aide d'une seule commande, vous pouvez utiliser
    docker-compose -f docker-compose.yml up --build -d