Saltar al contenido principal

Despliegue con Docker Compose

Primera instalación

1. Clonar el repositorio

git clone https://github.com/Jnasus/sgi-emch.git
cd sgi-emch

2. Crear el archivo de variables de entorno

cp backend/.env.example backend/.env
# Edita backend/.env con las credenciales reales

3. Crear la red externa (si no existe)

docker network create proxy_network

4. Construir e iniciar el stack

docker compose up --build -d

Docker construirá las imágenes del backend, frontend y documentación, e iniciará todos los servicios. La base de datos se inicializa automáticamente con el script db_sgi_emch.sql la primera vez que el volumen full_mysql_data está vacío.

5. Verificar que todo esté corriendo

docker compose ps

Todos los servicios deben aparecer como healthy o running.

Actualizaciones

Cuando hay cambios en el código:

git pull
docker compose up --build -d

Docker reconstruye solo los contenedores cuya imagen cambió. El volumen de base de datos no se toca — los datos persisten.

Reinicio sin reconstruir

docker compose restart

Detener el stack

# Detiene los contenedores pero conserva volúmenes y datos
docker compose down

# Detiene Y elimina volúmenes (BORRA TODOS LOS DATOS)
docker compose down -v
peligro

docker compose down -v elimina irreversiblemente los datos de la base de datos y los PDFs almacenados. Úsalo solo en entornos de desarrollo o cuando quieras empezar desde cero.

Verificar logs en tiempo real

# Todos los servicios
docker compose logs -f

# Solo el backend
docker compose logs -f backend

# Solo la base de datos
docker compose logs -f db

Stack de monitoreo (opcional)

El stack de monitoreo se levanta con un archivo compose separado y requiere que el stack principal ya esté corriendo.

Levantar monitoreo

docker compose -f docker-compose.monitoring.yml up -d

Verificar que Prometheus raspa el backend

# Debe devolver líneas con métricas (# HELP, # TYPE, ...)
docker exec sgi-full-prometheus wget -qO- http://sgi-full-backend:8080/actuator/prometheus | head -10

Acceder a Grafana

https://grafana.sgi.escuelamilitar.edu.pe

Credenciales por defecto: admin / admin (cambiar en el primer acceso).

El dashboard "SGI-EMCH Backend" se carga automáticamente al iniciar Grafana.

Para más detalles sobre configuración, diagnóstico y métricas disponibles, consulta la Guía de monitoreo.

Healthchecks configurados

ServicioCondición de salud
dbmysqladmin ping cada 10 s, 10 reintentos
backendwget /actuator/health cada 15 s, 8 reintentos
frontendDepende de backend: healthy
docsSin healthcheck (Nginx estático)

El backend no arranca hasta que la base de datos esté lista, y el frontend no arranca hasta que el backend responda.