2025-08-14 12:37:57 -03:00
|
|
|
services:
|
|
|
|
|
# Servicio del Backend API
|
|
|
|
|
elecciones-api:
|
|
|
|
|
build:
|
|
|
|
|
context: ./Elecciones-Web
|
|
|
|
|
dockerfile: src/Elecciones.Api/Dockerfile
|
|
|
|
|
container_name: elecciones-api
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
env_file:
|
|
|
|
|
- ./.env # Lee las variables de entorno desde el archivo .env
|
|
|
|
|
networks:
|
|
|
|
|
- elecciones-net
|
|
|
|
|
- shared-net # Se conecta a la red compartida para hablar con la DB
|
|
|
|
|
# No se exponen puertos directamente al host. El proxy se encarga.
|
|
|
|
|
|
|
|
|
|
# Servicio del Worker para la ingesta de datos
|
|
|
|
|
elecciones-worker:
|
|
|
|
|
build:
|
|
|
|
|
context: ./Elecciones-Web
|
|
|
|
|
dockerfile: src/Elecciones.Worker/Dockerfile
|
|
|
|
|
container_name: elecciones-worker
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
env_file:
|
|
|
|
|
- ./.env
|
|
|
|
|
networks:
|
|
|
|
|
- shared-net # Solo necesita acceso a la DB y a la API electoral (internet).
|
|
|
|
|
# No se exponen puertos.
|
|
|
|
|
|
|
|
|
|
# Servicio del Frontend (servido por Nginx)
|
|
|
|
|
# Lo definimos ahora, aunque lo construiremos más adelante.
|
|
|
|
|
elecciones-frontend:
|
|
|
|
|
build:
|
|
|
|
|
context: ./Elecciones-Web/frontend
|
|
|
|
|
dockerfile: Dockerfile
|
|
|
|
|
container_name: elecciones-frontend
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
networks:
|
|
|
|
|
- elecciones-net
|
|
|
|
|
# No se exponen puertos.
|
|
|
|
|
|
|
|
|
|
# Proxy Inverso que expone los servicios al exterior
|
|
|
|
|
proxy:
|
|
|
|
|
image: nginx:1.25-alpine
|
|
|
|
|
container_name: elecciones-proxy
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
volumes:
|
|
|
|
|
# Mapea nuestro archivo de configuración local al contenedor de Nginx
|
|
|
|
|
- ./proxy/nginx.conf:/etc/nginx/conf.d/default.conf
|
|
|
|
|
ports:
|
|
|
|
|
# ÚNICO PUNTO DE ENTRADA: Expone el puerto 80 del contenedor al puerto 8600 del host.
|
|
|
|
|
- "8600:80"
|
|
|
|
|
networks:
|
|
|
|
|
- elecciones-net
|
|
|
|
|
depends_on:
|
|
|
|
|
- elecciones-api
|
|
|
|
|
- elecciones-frontend
|
|
|
|
|
|
|
|
|
|
networks:
|
|
|
|
|
elecciones-net:
|
|
|
|
|
driver: bridge
|
|
|
|
|
|
|
|
|
|
# Asumimos que la red 'shared-net' ya existe en Docker.
|
|
|
|
|
# Para crearla manualmente: docker network create shared-net
|
|
|
|
|
shared-net:
|
|
|
|
|
external: true
|