Blog
Automatizacion de deploys con Docker y GitHub Actions Blog

Automatizacion de deploys con Docker y GitHub Actions

Haider Lopez ·
devopsdockerci-cd

La automatizacion del despliegue es una de las practicas mas importantes en el desarrollo de software moderno. Un pipeline CI/CD bien configurado ahorra tiempo y elimina errores humanos.

Arquitectura

Tres componentes: Docker para containerizar, GitHub Actions como orquestador, y un VPS con Docker Compose para produccion.

Docker multi-stage

Usamos Dockerfiles multi-stage para mantener las imagenes de produccion pequenas y seguras. El primer stage compila, el segundo solo copia artefactos y dependencias de produccion.

FROM node:22-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM node:22-alpine AS runner
WORKDIR /app
COPY --from=builder /app/build ./build
COPY --from=builder /app/node_modules ./node_modules
CMD ["node", "build"]

Zero-downtime

Combinamos healthchecks de Docker con un reverse proxy (Caddy o Nginx). El nuevo contenedor se inicia antes de detener el anterior, y el proxy redirige el trafico solo cuando el healthcheck es exitoso.