# ~/work/my_project_root/docker-compose.prod.yml (Production) version: "3.8" services: # MongoDB Database Service mongodb: image: mongo:latest container_name: mongodb volumes: - mongodb_data:/data/db restart: always # Redis Cache Service redis: image: redis:latest container_name: redis restart: always # RabbitMQ Message Broker rabbitmq: image: rabbitmq:3-management-alpine container_name: rabbitmq environment: RABBITMQ_DEFAULT_USER: coloring RABBITMQ_DEFAULT_PASS: coloring123. restart: always # ClickHouse Columnar Database for Analytics clickhouse: image: clickhouse/clickhouse-server:latest container_name: clickhouse volumes: - clickhouse_data:/var/lib/clickhouse environment: CLICKHOUSE_DB: omsdb CLICKHOUSE_USER: ckuser CLICKHOUSE_PASSWORD: ckpassword restart: always # Backend Service (OMS) oms: build: context: ./oms dockerfile: Dockerfile container_name: oms ports: - "3000:3000" environment: NODE_ENV: production PORT: 3000 MONGO_URI: mongodb://mongodb:27017/omsdb REDIS_URI: redis://redis:6379 # !!! 生产环境请添加敏感环境变量 !!! # 生产环境不挂载代码,依赖 Dockerfile 复制 # volumes: # - ./oms:/usr/src/app restart: always depends_on: - mongodb - redis # Data Ingestor Service (独立服务) data-ingestor: build: context: ./data-ingestor dockerfile: Dockerfile container_name: data-ingestor environment: RABBITMQ_URL: amqp://rabbitmq:5672 RABBITMQ_QUEUE: user_events CLICKHOUSE_HOST: http://clickhouse:8123 CLICKHOUSE_DATABASE: omsdb MONGODB_URI: mongodb://mongodb:27017/omsdb restart: always depends_on: - rabbitmq - clickhouse - mongodb # Frontend Nginx Service (OMSApp) omsapp-nginx: build: context: ./omsapp # *** 关键变更:构建上下文是 ./omsapp dockerfile: Dockerfile container_name: omsapp-nginx ports: - "80:80" restart: always depends_on: - oms volumes: mongodb_data: clickhouse_data: