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:
- Cambiar de Directorio: Se movió a la amd64 directorio donde se encontraba el Dockerfile.
- Construir la Imagen: Ejecutó docker build con la etiqueta especificada en
DOCKER_IMAGE_CI
. - 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.