Explorá

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 sabés cómo crear una imagen Docker eficiente, automatizar el proceso de despliegue es el siguiente paso natural. Este artículo te enseñará cómo automatizar la construcción y el despliegue de una imagen Docker a un registro utilizando el pipeline de integración y despliegue continuo (CI/CD) de GitLab.

Configuración del Pipeline de GitLab

GitLab CI/CD es una excelente herramienta para automatizar la construcción y despliegue de imágenes Docker. Utilizaremos un archivo .gitlab-ci.yml para definir la configuración del pipeline. Este pipeline tendrá una única etapa llamada builder para construir y publicar la imagen 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 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 (este 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 utilizando credenciales almacenadas en las variables de GitLab CI/CD DOCKERHUB_USER y DOCKERHUB_PASS.

Paso 3: Construcción y Publicación de 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 ejecuta solo cuando el commit está etiquetado con un número de versión (por ejemplo, 1.0.0). Utiliza la imagen docker:latest y el servicio docker:dind (Docker en Docker).

El script realiza los siguientes pasos:

  1. Cambiar de Directorio: Se mueve al directorio amd64 donde se encuentra el Dockerfile.
  2. Construir la Imagen: Ejecuta docker build con la etiqueta especificada en DOCKER_IMAGE_CI.
  3. Publicar la Imagen: Subirá la imagen construida a Docker Hub.

Contenido Completo del Archivo .gitlab-ci.yml

Aquí está 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á el Despliegue de tus Imágenes Docker Usando GitLab

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

Esta configuración garantiza que cada vez que se presiona una nueva etiqueta en el repositorio, nuestra imagen se construya y actualice automáticamente en Docker Hub, agilizando el proceso de despliegue y manteniendo la consistencia en las versiones.

Dicha automatización es crucial para despliegues eficientes y sin errores, especialmente en entornos de desarrollo ágiles.

Si encontraste útil este post, leé nuestro blog para más consejos, trucos y guías sobre WordPress.