Automatiza Docker desde GitHub con Actions

Clase 22 de 34Curso de Docker Avanzado

Resumen

Automatizar tu flujo de DevOps con Docker y GitHub Actions acelera cada entrega, reduce errores y libera tiempo. Aquí verás, paso a paso, cómo pasar de un simple commit a una imagen publicada en Docker Hub sin trabajo manual repetitivo, aprovechando workflows que compilan y publican por ti.

¿Por qué automatizar el despliegue de contenedores con CI/CD?

La gestión manual de muchos contenedores en producción se vuelve una tarea interminable. Con integración continua y despliegue continuo, cada commit en tu repositorio activa un flujo que construye y publica tus imágenes de forma consistente.

  • Menos errores humanos: ejecución repetible en cada cambio.
  • Velocidad de entrega: de commit a imagen publicada en minutos.
  • Trazabilidad: cada paso queda registrado en Actions.
  • Estandarización: un solo Dockerfile guía la compilación.

¿Cómo configurar el repositorio y el workflow en GitHub?

Primero se prepara el repositorio con una carpeta de CI y un Dockerfile base. Luego se crea un workflow manual en GitHub Actions que se ejecuta en la rama main y define los pasos: obtener el código, hacer login en Docker Hub, construir y publicar la imagen.

  • Crear carpeta de CI e incluir un Dockerfile con imagen base de NGINX y un HTML sencillo.
  • Subir cambios a GitHub con git.
git status
git add .
git commit -m "Carpeta CI agregada"
git push
  • En la pestaña Actions, crear un workflow manual y guardarlo en .github/workflows/ con nombre claro (por ejemplo, docker.yml).
  • Definir el workflow en YAML: nombre (docker_ci), disparador en main, un job que corre en Ubuntu y pasos secuenciales.
name: docker_ci
on:
  push:
    branches: [main]
jobs:
  docker_build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        # obtiene el contenido del repositorio
      - name: Login Docker Hub
        # usa secretos para autenticarse
      - name: Build image
        # ejecuta docker build
      - name: Push image
        # ejecuta docker push
  • Configurar Secrets del repositorio en Settings > Security > Secrets > Actions:
  • Usuario de Docker Hub: crear el secreto DOCKER_HUB_USER_NAME con el nombre de usuario.
  • Personal access token: generar el token en la cuenta de Docker Hub con permisos de leer, escribir y borrar; copiarlo una sola vez y guardarlo como secreto (en mayúsculas para identificarlo fácil). El token no es tu contraseña.

Habilidades y conceptos aplicados: - Repositorios y ramas: uso de main como rama de despliegue. - Workflows en YAML: definición de disparadores, jobs y pasos. - Gestión de credenciales: Secrets para autenticación segura. - Buenas prácticas: nombres de secretos en mayúsculas y verificación del token antes de cerrarlo.

¿Cómo compilar y publicar la imagen desde la acción?

Con el login realizado, el workflow ejecuta la compilación y la publicación en Docker Hub replicando lo que harías en tu terminal, pero de forma automatizada.

  • Construir la imagen con plataforma de Linux, etiqueta con usuario, proyecto y :latest, y ruta del Dockerfile ubicado en la carpeta de CI.
docker build --platform linux -t <usuario>/<proyecto>:latest -f CI/Dockerfile .
  • Publicar la imagen en Docker Hub.
docker push <usuario>/<proyecto>:latest
  • Ver el progreso en Actions: círculo amarillo mientras corre, registro de cada paso (construcción, publicación y limpieza tipo post login), y palomita verde al finalizar.
  • Confirmar en Docker Hub que la imagen aparece actualizada automáticamente gracias al Dockerfile y al workflow reciente.

Beneficios directos: - Automatización end-to-end: de commit a docker push sin pasos manuales. - Múltiples imágenes: cada Dockerfile en el repositorio puede publicarse con el mismo patrón. - Ahorro de tiempo: ya no necesitas compilar localmente ni publicar una por una.

¿Qué parte te gustaría optimizar después: estructura del YAML, manejo de etiquetas o organización de múltiples Dockerfiles? Comparte tus dudas en los comentarios.