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.