Este proyecto es un desafío de DevOps que consiste en contenedorizar una aplicación simple en Node.js y desplegarla utilizando Docker y Docker Compose. El objetivo principal es automatizar la creación de la imagen, configurar un pipeline básico de CI/CD con GitHub Actions y hacer que la aplicación funcione localmente con una base de datos PostgreSQL.
-
Configuración y Contenedorización:
- Escribir un
Dockerfilepara una aplicación en Node.js. - Crear un
docker-compose.ymlpara levantar la aplicación junto con PostgreSQL.
- Escribir un
-
Automatización con CI/CD:
- Configurar un pipeline con GitHub Actions que:
- Construya la imagen Docker.
- Ejecute pruebas básicas.
- Publique la imagen en Docker Hub.
- Configurar un pipeline con GitHub Actions que:
-
Prueba y Despliegue Local:
- Ejecutar la aplicación localmente con
docker-compose up. - Verificar que la aplicación responde correctamente.
- Ejecutar la aplicación localmente con
mkdir devops-challenge && cd devops-challenge
touch Dockerfile docker-compose.yml app.js package.json
mkdir -p .github/workflows
touch .github/workflows/ci-cd.yml
┌───────────────────────────────┐
│ Desarrollador │
│ (Escribe y sube código) │
└─────────────┬─────────────────┘
│
▼
┌───────────────────────────────┐
│ Repositorio Git │
│ (GitHub / GitLab) │
└─────────────┬─────────────────┘
│ (Trigger CI/CD)
▼
┌───────────────────────────────┐
│ Pipeline CI/CD │
│ (GitHub Actions ejecuta) │
├─────────────┬────────────────┬┘
│ │ │
┌────────────▼───┐ ┌──────▼──────────┐ ┌─▼─────────────────┐
│ Build & Test │ │ Docker Build │ │ Push to Registry │
│ (Lint, Test) │ │ (Imagen .tar) │ │ (DockerHub, ECR) │
└────────────────┘ └─────────────────┘ └───────────────────┘
│
▼
┌───────────────────────────────┐
│ Docker Compose Deployment │
│ (Levanta App y PostgreSQL) │
├─────────────┬─────────────────┤
│ │ │
┌────────────▼───┐ ┌──────▼─────────┐ ┌──▼────────────────┐
│ App Node.js │ │ PostgreSQL DB │ │ Expose en 3000 │
│ (Contenedor) │ │ (Contenedor) │ │ (localhost:3000) │
└────────────────┘ └────────────────┘ └───────────────────┘
│
▼
┌───────────┐
│ Usuarios │
│ (Acceden) │
└───────────┘
- El desarrollador escribe código y lo sube a GitHub.
- GitHub Actions se activa automáticamente:
- Construye la imagen Docker.
- Ejecuta pruebas.
- Publica la imagen en Docker Hub.
- Docker Compose levanta la aplicación en local con PostgreSQL.
- Los usuarios pueden acceder a la aplicación en
http://localhost:3000.