services: elecciones-api: build: context: ./Elecciones-Web dockerfile: src/Elecciones.Api/Dockerfile container_name: elecciones-api restart: unless-stopped env_file: ./.env # .NET expone el puerto 8080 por defecto en contenedores expose: - "8080" networks: - elecciones-net - shared-net # Servicio del Worker (sin cambios) elecciones-worker: build: context: ./Elecciones-Web dockerfile: src/Elecciones.Worker/Dockerfile container_name: elecciones-worker restart: unless-stopped env_file: ./.env networks: - shared-net volumes: - ./logs-worker:/app/logs # Servicio del Frontend Público (sin cambios) elecciones-frontend: build: context: ./Elecciones-Web/frontend dockerfile: Dockerfile container_name: elecciones-frontend restart: unless-stopped expose: - "80" networks: - elecciones-net # --- Frontend Admin --- elecciones-frontend-admin: build: context: ./Elecciones-Web/frontend-admin dockerfile: Dockerfile container_name: elecciones-frontend-admin restart: unless-stopped expose: - "80" networks: - elecciones-net # 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 de proxy local al contenedor - ./proxy/nginx.conf:/etc/nginx/conf.d/default.conf ports: # Puerto para el sitio público/widgets - "8600:80" # --- NUEVO PUERTO: Puerto para el panel de administración --- - "8700:81" networks: - elecciones-net depends_on: - elecciones-api - elecciones-frontend - elecciones-frontend-admin networks: elecciones-net: driver: bridge shared-net: external: true