Definición de lógica personalizada con puntos de extensión

En esta lección, definirá la lógica de inicio de Docker personalizada con el script de shell de punto de extensión.

Por qué y cuándo se efectúa esta tarea

HCl Commerce V9 tiene dos puntos de extensión predefinidos antes de que se inicie el proceso principal de Docker, por lo que puede adoptar una forma más flexible de personalizar la lógica de inicio de la imagen de Docker.

El diagrama siguiente muestra la lógica de inicio del contenedor HCl Commerce. Los dos puntos de extensión están predefinidos antes y después de la lógica de configuración predeterminada.
Figura 1. Lógica de inicio de Docker
Lógica de inicio de Docker

Los dos puntos de extensión se ejecutan antes de que se inicien los servidores de aplicaciones. Puede definir lo que desea hacer en preconfigue.sh y cusConfiguration.sh antes de que el servidor se inicie en la imagen de Docker. Toda la lógica compleja se puede definir en preConfigure.sh y cusCunfiguration.sh. En Dockerfile, solo necesita definir la lógica para copiar estos dos archivos de shell de personalización en la imagen de Docker. A continuación, no es necesario cambiar la imagen de Docker cuando desee cambiar la lógica asociada con estos dos shells de personalización. De este modo, solo puede descargar el paquete de personalización en el preconfigure.sh y desplegar el cambio de configuración en cusCunfiguration.sh.

Procedimiento

  1. Cree una nueva carpeta cus en el entorno local.
  2. Cree un archivo preConfigure.sh en la carpeta local para incluir las líneas de código siguientes:
    #!/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. Cree un archivo custConfiguration.sh en la carpeta local para incluir las líneas de código siguientes:
    #!/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. Cree un archivo de Docker para incluir las líneas de código siguientes:
    FROM docker-repo/commerce/crs-app:tag
    COPY preConfigure.sh /SETUP/bin/
    COPY custConfiguration.sh /SETUP/bin
    
  5. Cree la imagen de Docker personalizada:
    docker build -t docker-repo/commerce/crs-app:cus

Resultados

Ha personalizado la lógica de inicio de Docker con los puntos de extensión.

Esta nueva imagen de Docker no incluye el paquete de personalización ni la lógica de Shell para cambiar el archivo de configuración. Sin embargo, esta imagen sabe lo que debe hacer cuando el contenedor se inicia mediante los scripts preConfiguation.sh y custConfiguration.sh. Solo se añaden dos archivos a la imagen de Docker base, por lo que el tamaño de la imagen es el mínimo. Si desea cambiar la lógica de personalización, cambie preconfigure.sh y custConfiguration.sh files.

El inconveniente de este método es que puede definir la lógica personalizada solo con el script de shell. Cuando la lógica personalizada es compleja, puede ser difícil definirla en el script de Shell. Si es el caso, considere la posibilidad de definir la lógica en los mandatos del motor Run.