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.