Définition de la logique personnalisée avec des points d'extension

Dans cette leçon, vous définissez la logique de démarrage Docker personnalisée avec le script de shell du point d'extension.

Pourquoi et quand exécuter cette tâche

HCL Commerce V9 a deux points d'extension prédéfinis avant le démarrage du processus principal Docker. Ainsi, vous pouvez adopter une méthode plus souple pour personnaliser la logique de démarrage de l'image Docker.

Le diagramme suivant montre la logique de démarrage du conteneur HCL Commerce. Les deux points d'extension sont prédéfinis avant et après la logique de configuration par défaut.
Figure 1. Logique de démarrage Docker
Logique de démarrage Docker

Les deux points d'extension sont exécutés avant le démarrage des serveurs d'application. Vous pouvez définir ce que vous voulez faire dans preconfigue.sh et cusConfiguration.sh avant le démarrage du serveur dans l'image Docker. Toute la logique complexe peut être définie dans preConfigure.sh et cusCunfiguration.sh. Dans le Dockerfiler, vous devez uniquement définir la logique pour copier ces deux fichiers de shell de personnalisation dans l'image Docker. Ensuite, vous n'avez pas besoin de modifier l'image Docker lorsque vous souhaitez modifier la logique associée à ces deux shell de personnalisation. De cette façon, vous ne pouvez télécharger le package de personnalisation que dans preconfigure.sh et déployer le changement de configuration dans cusCunfiguration.sh.

Procédure

  1. Créez un dossier cus dans l'environnement local.
  2. Créez un fichier preConfigure.sh dans le dossier local pour inclure les lignes de code suivantes :
    #!/bin/bash
    wget -O '/opt/WebSphere/Liberty/usr/servers/default/crs-app-cus.zip ' "http://nexusServer:8081/nexus/service/local/artifact/maven/redirect?r=snapshots&g=crs-app-cus&a=crs-app-cus&v=@version@&p=zip" && \
    unzip /opt/WebSphere/Liberty/usr/servers/default/crs-app-cus.zip -d /opt/WebSphere/Liberty/usr/servers/default/
    
  3. Créez un fichier custConfiguration.sh dans le dossier local pour inclure les lignes de code suivantes :
    #!/bin/bash
          sed -i '$a\-javaagent:./jmx_prometheus_javaagent-0.3.1.jar=8080:config.yaml'      /opt/WebSphere/Liberty/usr/servers/default/jvm.options
    
  4. Créez un fichier Docker pour inclure les lignes de code suivantes :
    FROM docker-repo/commerce/crs-app:tag
    COPY preConfigure.sh /SETUP/bin/
    COPY custConfiguration.sh /SETUP/bin
    
  5. Générez l'image Docker personnalisée :
    docker build -t docker-repo/commerce/crs-app:cus

Résultats

Vous avez personnalisé la logique de démarrage Docker avec les points d'extension.

Cette nouvelle image Docker n'inclut pas le package de personnalisation et la logique de shell pour modifier le fichier de configuration. Toutefois, cette image sait ce qu'elle doit faire lorsque le conteneur est démarré à l'aide des scripts preConfiguation.sh et custConfiguration.sh. Seuls deux fichiers sont ajoutés à l'image Docker de base. Ainsi, la taille de l'image est minimale. Si vous souhaitez modifier la logique de personnalisation, modifiez preconfigure.sh et custConfiguration.sh files.

L'inconvénient de cette méthode, c'est que vous pouvez définir la logique personnalisée uniquement avec le script de shell. Lorsque la logique personnalisée est complexe, il peut être difficile de la définir dans le script de shell. Si c'est le cas, envisagez de définir la logique dans les commandes Run Engine.