| 
									
										
										
										
											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).
 | 
					
						
							| 
									
										
										
										
											2025-08-16 13:05:44 -03:00
										 |  |  |     volumes:
 | 
					
						
							|  |  |  |       # Mapea el directorio /app/logs de dentro del contenedor
 | 
					
						
							|  |  |  |       # a un directorio llamado 'logs-worker' en la raíz de tu proyecto en la máquina local.
 | 
					
						
							|  |  |  |       - ./logs-worker:/app/logs
 | 
					
						
							| 
									
										
										
										
											2025-08-14 12:37:57 -03:00
										 |  |  |     # 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
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-16 09:37:54 -03:00
										 |  |  |   # La red 'shared-net' ya existe en Docker.
 | 
					
						
							| 
									
										
										
										
											2025-08-14 12:37:57 -03:00
										 |  |  |   shared-net:
 | 
					
						
							|  |  |  |     external: true
 |