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.
![Lógica de inicio de Docker](../images/startup_logic.jpg)
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
- Cree una nueva carpeta cus en el entorno local.
-
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/
-
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
-
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
-
Cree la imagen de Docker personalizada:
docker build -t docker-repo/commerce/crs-app:cus
Resultados
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.