Linux

Creación de una imagen de Docker personalizada a partir de un paquete desplegable

Puede crear imágenes de Docker personalizadas que incluyan el código personalizado o las configuraciones personalizadas y, a continuación, compartir y desplegar las nuevas imágenes.

HCL Commerce Version 9.1.14.0 or laterImportant: A partir de HCL Commerce 9.1.14.0, las imágenes del contenedor de aplicaciones están pensadas para ejecutarse como usuario no raíz de forma predeterminada. Este cambio puede interrumpir su despliegue personalizado. Por lo tanto, debe revisar el cambio y sus posibles efectos. Para obtener más información, consulte HCL Commerce : usuarios y privilegios de contenedores.
Note: Si está trabajando en un entorno de ejecución local para fines de pruebas, desarrollo o depuración, puede que desee utilizar un método temporal para desplegar rápidamente cambios en el entorno local. Para obtener más información, consulte Actualización de aplicaciones dentro de contenedores Docker en ejecución.

Before you begin

  1. En un entorno de desarrollo, cree paquetes de personalización (ts, store, search, xc) de modo que incluyan el código personalizado. Para obtener más información, consulte Compilación de paquetes.
  2. Descargue los paquetes de personalización en el entorno de ejecución.

About this task

El siguiente procedimiento le enseña cómo:
  1. Crear un Dockerfile para cada tipo de imagen de Docker.
  2. Crear un archivo docker-compose.yml que haga referencia a Dockerfiles para crear las imágenes nuevas.
Al final de este procedimiento, tendrá directorios y archivos que se parecerán a la siguiente estructura:
 +search ++Dockerfile ++CusDeploy +store ++Dockerfile ++CusDeploy +app ++Dockerfile ++CusDeploy +web ++Dockerfile +xc ++Dockerfile ++CusDeploy +db ++Dockerfile +docker-compose.yml

Procedure

  1. Crear directorios CusDeploy independientes para cada imagen de Docker que quiere personalizar.
    Por ejemplo,
    • /opt/WebSphere/db/CusDeploy
      Note: Esto solo es aplicable si está ejecutando la base de datos en un contenedor de Docker.
    • /opt/WebSphere/search/CusDeploy
    • /opt/WebSphere/store/CusDeploy
    • /opt/WebSphere/xc/CusDeploy
    • /opt/WebSphere/app/CusDeploy
    • /opt/WebSphere/web/CusDeploy
  2. Extraiga todos los paquetes de personalización que se crearon desde el programa de utilidad WCB en el directorio apropiado.
    Por ejemplo,
    • Extraiga wcbd-deploy-server-ts-app.zip en /opt/WebSphere/app/CusDeploy.
    • Extraiga wcbd-deploy-server-crs-app.zip en /opt/WebSphere/store/CusDeploy
    • Extraiga wcbd-deploy-server-search-app.zip en /opt/WebSphere/search/CusDeploy.
    • Extraiga wcbd-deploy-server-xc-app.zip en /opt/WebSphere/xc/CusDeploy.
    Para más información sobre la creación de paquetes, consulte Compilación de paquetes.
  3. Complete los siguientes pasos para crear o actualizar un Dockerfile para crear una nueva imagen de aplicación de búsqueda de Docker.
    1. Cree un Dockerfile en el directorio de búsqueda.
      Por ejemplo, /opt/WebSphere/search/Dockerfile
    2. Añada el siguiente texto en el 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>
      Para versiones de HCL Commerce de la 9.1.0.0 a la 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: La instrucción HEALTHCHECK comprueba el estado de la aplicación cuando se ejecuta el contenedor. Cuando el número de contenedores crece, es posible que tenga que aumentar el intervalo HEALTHCHECK para evitar anomalías en la comprobación.
      registro_Docker
      El URL de registro de Docker donde se encuentra la imagen de origen.
      nombre_imagen_origen
      El nombre de la imagen de origen. Por ejemplo, ts-app, ts-web, crs-app, search-app, xc-app.
      código_imagen_origen
      El código de la imagen de origen que desea utilizar.
      mandatos_opcionales
      (Opcional) Puede especificar otros mandatos para configurar la aplicación dentro de la imagen de Docker. Esto puede incluir utilizar mandatos Run Engine o crear scripts de inicio de contenedor. Por ejemplo, puede utilizar mandatos Run Engine para establecer el origen de datos de modo que la aplicación pueda conectarse con la base de datos.
      • El argumento FROM especifica qué imagen de Docker base actualizar.
      • El argumento RUN hace referencia a un script de shell que indica cómo aplicar el paquete de personalización en la imagen de origen.
  4. Complete los siguientes pasos para crear o actualizar un Dockerfile para crear una nueva imagen de crs-app Docker (tienda).
    1. Cree un Dockerfile en el directorio de tienda.
      Por ejemplo, /opt/WebSphere/store/Dockerfile
    2. Añada el siguiente texto en el 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>
      Para versiones de HCL Commerce de la 9.1.0.0 a la 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. Complete los siguientes pasos para crear o actualizar un Dockerfile para crear una nueva imagen de ts-appTransaction server Docker container.
    1. Cree un Dockerfile en el directorio de aplicación.
      Por ejemplo, /opt/WebSphere/app/Dockerfile
    2. Añada el siguiente texto en el 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
      Para versiones de HCL Commerce de la 9.1.0.0 a la 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. Complete los siguientes pasos para crear o actualizar un Dockerfile para crear una nueva imagen de xc-app Docker (personalización).
    1. Cree un Dockerfile en el directorio xc.
      Por ejemplo, /opt/WebSphere/xc/Dockerfile
    2. Añada el siguiente texto en el 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
      Para versiones de HCL Commerce de la 9.1.0.0 a la 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. Complete los siguientes pasos para crear o actualizar un Dockerfile para crear una nueva imagen de ts-web Docker (web).
    1. Cree un Dockerfile en el directorio web.
      Por ejemplo, /opt/WebSphere/web/Dockerfile
    2. Añada el siguiente texto en el 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
      Para versiones de HCL Commerce de la 9.1.0.0 a la 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. Complete los siguientes pasos para crear o actualizar un Dockerfile para crear una nueva imagen de ts-db Docker (base de datos).
    Note: Esto solo es aplicable si está ejecutando la base de datos en un contenedor de Docker.
    1. Cree un Dockerfile en el directorio db.
      Por ejemplo, /opt/WebSphere/db/Dockerfile
    2. Añada el siguiente texto en el 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. Copie el archivo docker-compose.yml existente en el mismo directorio que contenga los directorios de Docker.
    Por ejemplo, /opt/WebSphere/docker-compose.yml.
  10. Edite el archivo docker-compose.yml para añadir parámetros build y context
    Por ejemplo,
     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. Detenga y elimine los contenedores de ejecución existentes.
    Por ejemplo, puede ejecutar el siguiente mandato:
    docker-compose -f docker-compose.yml rm
  12. Ejecute el siguiente mandato para crear las nuevas imágenes.
    docker-compose -f docker-compose.yml build
    Note: Si desea crear y, a continuación, desplegar los contenedores en un mandato puede utilizar
    docker-compose -f docker-compose.yml up --build -d