Enter

Docker / 3 min de lectura

Cómo Automatizar el Despliegue de Imágenes de Docker con CI/CD de GitLab

docker logo

Una vez que supiste cómo crear una imagen de Docker eficiente, automatizar el proceso de despliegue fue el siguiente paso natural. Este artículo te enseñó a automatizar la construcción y el despliegue de una imagen de Docker a un registro utilizando el pipeline de Integración y Despliegue Continuo (CI/CD) de GitLab.

Configurando el Pipeline de GitLab

GitLab CI/CD fue una herramienta excelente para automatizar la construcción y el despliegue de imágenes de Docker. Usamos un archivo .gitlab-ci.yml para definir la configuración del pipeline. Este pipeline tuvo una única etapa llamada builder para construir y enviar la imagen de Docker.

Desglose del Pipeline

Paso 1: Variables

variables:
  DOCKER_IMAGE_CI: whitecanvas/builder:$CI_COMMIT_TAG

Definimos una variable DOCKER_IMAGE_CI que contiene el nombre de la imagen de Docker junto con una etiqueta. $CI_COMMIT_TAG es una variable predefinida en GitLab CI/CD que utiliza el nombre de la etiqueta del commit si está presente (esta pipeline se ejecutará solo cuando el usuario cree un número de etiqueta).

Paso 2: Autenticación

before_script:
  - echo "$DOCKERHUB_PASS" | docker login --username $DOCKERHUB_USER --password-stdin

Antes de ejecutar los scripts principales, iniciamos sesión en Docker Hub usando las credenciales almacenadas en las variables de GitLab CI/CD DOCKERHUB_USER y DOCKERHUB_PASS.

Paso 3: Construyendo y Subiendo la Imagen

amd64_image:
  only:
    - /(d+.)?(d+.)?(*|d+)/
  stage: builder
  image: docker:latest
  services:
    - docker:dind
  script:
    - cd amd64
    - docker build -t $DOCKER_IMAGE_CI .
    - docker push $DOCKER_IMAGE_CI

Este trabajo se ejecutó solo cuando el commit tuvo una etiqueta con un número de versión (por ejemplo, 1.0.0). Usó la imagen docker:latest y el servicio docker:dind (Docker en Docker).

El script realizó los siguientes pasos:

  1. Cambiar de Directorio: Se movió a la amd64 directorio donde se encontraba el Dockerfile.
  2. Construir la Imagen: Ejecutó docker build con la etiqueta especificada en DOCKER_IMAGE_CI.
  3. Subir la Imagen: Subió la imagen construida a Docker Hub.

Contenido Completo del Archivo .gitlab-ci.yml

Acá tenés el contenido completo del archivo .gitlab-ci.yml.

stages:
  - builder

variables:
  DOCKER_IMAGE_CI: whitecanvas/builder:$CI_COMMIT_TAG

before_script:
  - echo "$DOCKERHUB_PASS" | docker login --username $DOCKERHUB_USER --password-stdin

amd64_image:
  only:
    - /(d+.)?(d+.)?(*|d+)/
  stage: builder
  image: docker:latest
  services:
    - docker:dind
  script:
    - cd amd64
    - docker build -t $DOCKER_IMAGE_CI .
    - docker push $DOCKER_IMAGE_CI

Automatizá Tus Despliegues de Imágenes Docker Usando GitLab

Al aprovechar el pipeline CI/CD de GitLab, podemos automatizar la construcción y el despliegue de una imagen Docker.

Esta configuración asegura que cada vez que se empuje una nueva etiqueta al repositorio, nuestra imagen se construya y actualice automáticamente en Docker Hub, simplificando el proceso de despliegue y manteniendo la consistencia entre lanzamientos.

Esta automatización fue clave para realizar despliegues eficientes y sin errores, especialmente en entornos de desarrollo ágil.

Si te pareció útil este post, lee nuestro blog para más consejos, trucos y guías sobre WordPress.