version: '3.8' networks: backend-network: driver: bridge services: # Nginx 网关 nginx: image: nginx:1.25-alpine ports: - "8080:80" volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro depends_on: - gateway networks: - backend-network # 网关服务 gateway: build: context: ./gateway dockerfile: Dockerfile ports: - "8000:8000" depends_on: - user-svc - redis networks: - backend-network # 用户服务 user-svc: build: context: ./services/user-svc dockerfile: Dockerfile ports: - "9000:9000" depends_on: - postgres networks: - backend-network # 数据库 postgres: image: postgres:18.3-alpine3.23 environment: POSTGRES_USER: admin POSTGRES_PASSWORD: password POSTGRES_DB: backend ports: - "5432:5432" volumes: - postgres-data:/var/lib/postgresql/data - ./services/user-svc/migrations:/docker-entrypoint-initdb.d networks: - backend-network # Redis redis: image: redis:8.6.2-alpine ports: - "6379:6379" volumes: - redis-data:/var/lib/redis/data networks: - backend-network # Proto 编译服务 proto-builder: build: context: ./scripts/docker-proto-builder dockerfile: Dockerfile volumes: - ./shared/proto:/proto networks: - backend-network volumes: postgres-data: redis-data: