65 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| 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).
 | |
|     entrypoint: ["sh", "-c", "printenv | grep ElectoralApi"]
 | |
|     # 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
 | |
| 
 | |
|   # La red 'shared-net' ya existe en Docker.
 | |
|   shared-net:
 | |
|     external: true |