feat: Configuración inicial de Docker Compose, Nginx y proyectos .NET

This commit is contained in:
2025-08-14 12:37:57 -03:00
parent 2fd30d1a2e
commit d9bcfd7086
38 changed files with 967 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
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