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