Saltar al contenido principal

Diagrama de despliegue

El sistema se despliega íntegramente en un servidor Linux usando Docker Compose. Cada servicio corre en su propio contenedor y se comunica a través de redes Docker internas.

Stack principal (docker-compose.yml)

Stack de monitoreo (docker-compose.monitoring.yml)

Stack opcional desplegado por separado.

Nodos de despliegue

NodoTipoArtefactos desplegados
Servidor LinuxVM / Bare MetalTodos los contenedores Docker
Contenedor frontendDocker (Nginx)Build de React/Vite compilado a archivos estáticos
Contenedor backendDocker (JRE 21)JAR de Spring Boot
Contenedor docsDocker (Nginx)Build de Docusaurus compilado a archivos estáticos
Contenedor dbDocker (MySQL 8.0)Datos en volumen persistente full_mysql_data
Contenedor backupDocker (Alpine)Script backup.sh ejecutado por crond
Contenedor prometheusDockerBinario Prometheus + datos en prometheus_data
Contenedor lokiDockerBinario Loki + datos en loki_data
Contenedor promtailDockerBinario Promtail + acceso al socket Docker
Contenedor grafanaDockerGrafana + dashboards provisioned + datos en grafana_data

Puertos y acceso externo

Solo Nginx Proxy Manager expone puertos al exterior (80 y 443). Todos los demás servicios son internos.

URL públicaServicio destino
https://sgi.escuelamilitar.edu.pefrontend (SPA React)
https://sgi-docs.escuelamilitar.edu.pedocs (Docusaurus)
https://sgi-grafana.escuelamilitar.edu.pegrafana (monitoreo)

Healthchecks

ContenedorHealthcheck
dbmysqladmin ping cada 10 s — 10 reintentos
backendwget /actuator/health cada 15 s — 8 reintentos
frontendDepende de backend: healthy