services: # Servicio del Backend API mercados-api: build: context: ./Mercados-Web dockerfile: src/Mercados.Api/Dockerfile container_name: mercados-api restart: always env_file: - ./.env # Lee las variables desde un archivo .env en la misma carpeta networks: - mercados-net - shared-net # Se conecta a la red compartida para hablar con la DB # NO se exponen puertos al host. # Servicio del Worker mercados-worker: build: context: ./Mercados-Web dockerfile: src/Mercados.Worker/Dockerfile container_name: mercados-worker restart: always env_file: - ./.env networks: - shared-net # Solo necesita acceso a la DB. # NO se exponen puertos al host. # Servicio del Frontend (servido por Nginx) mercados-frontend: build: context: ./Mercados-Web/frontend dockerfile: Dockerfile container_name: mercados-frontend restart: always networks: - mercados-net # NO se exponen puertos al host. # --- NUEVO SERVICIO: Proxy Inverso Local --- proxy: image: nginx:1.25-alpine container_name: mercados-proxy restart: always volumes: # Mapeamos nuestro archivo de configuración al contenedor de Nginx - ./proxy-local/nginx.conf:/etc/nginx/conf.d/default.conf ports: # ESTE ES EL ÚNICO PUNTO DE ENTRADA DESDE EL EXTERIOR # Expone el puerto 80 del contenedor al puerto 8500 del host Debian. - "8500:80" networks: - mercados-net depends_on: - mercados-api - mercados-frontend networks: mercados-net: driver: bridge shared-net: external: true