docker-compose.prod.yml 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. # ~/work/my_project_root/docker-compose.prod.yml (Production)
  2. version: "3.8"
  3. services:
  4. # MongoDB Database Service
  5. mongodb:
  6. image: mongo:latest
  7. container_name: mongodb
  8. volumes:
  9. - mongodb_data:/data/db
  10. restart: always
  11. # Redis Cache Service
  12. redis:
  13. image: redis:latest
  14. container_name: redis
  15. restart: always
  16. # RabbitMQ Message Broker
  17. rabbitmq:
  18. image: rabbitmq:3-management-alpine
  19. container_name: rabbitmq
  20. environment:
  21. RABBITMQ_DEFAULT_USER: coloring
  22. RABBITMQ_DEFAULT_PASS: coloring123.
  23. restart: always
  24. # ClickHouse Columnar Database for Analytics
  25. clickhouse:
  26. image: clickhouse/clickhouse-server:latest
  27. container_name: clickhouse
  28. volumes:
  29. - clickhouse_data:/var/lib/clickhouse
  30. environment:
  31. CLICKHOUSE_DB: omsdb
  32. CLICKHOUSE_USER: ckuser
  33. CLICKHOUSE_PASSWORD: ckpassword
  34. restart: always
  35. # Backend Service (OMS)
  36. oms:
  37. build:
  38. context: ./oms
  39. dockerfile: Dockerfile
  40. container_name: oms
  41. ports:
  42. - "3000:3000"
  43. environment:
  44. NODE_ENV: production
  45. PORT: 3000
  46. MONGO_URI: mongodb://mongodb:27017/omsdb
  47. REDIS_URI: redis://redis:6379
  48. # !!! 生产环境请添加敏感环境变量 !!!
  49. # 生产环境不挂载代码,依赖 Dockerfile 复制
  50. # volumes:
  51. # - ./oms:/usr/src/app
  52. restart: always
  53. depends_on:
  54. - mongodb
  55. - redis
  56. # Data Ingestor Service (独立服务)
  57. data-ingestor:
  58. build:
  59. context: ./data-ingestor
  60. dockerfile: Dockerfile
  61. container_name: data-ingestor
  62. environment:
  63. RABBITMQ_URL: amqp://rabbitmq:5672
  64. RABBITMQ_QUEUE: user_events
  65. CLICKHOUSE_HOST: http://clickhouse:8123
  66. CLICKHOUSE_DATABASE: omsdb
  67. MONGODB_URI: mongodb://mongodb:27017/omsdb
  68. restart: always
  69. depends_on:
  70. - rabbitmq
  71. - clickhouse
  72. - mongodb
  73. # Frontend Nginx Service (OMSApp)
  74. omsapp-nginx:
  75. build:
  76. context: ./omsapp # *** 关键变更:构建上下文是 ./omsapp
  77. dockerfile: Dockerfile
  78. container_name: omsapp-nginx
  79. ports:
  80. - "80:80"
  81. restart: always
  82. depends_on:
  83. - oms
  84. volumes:
  85. mongodb_data:
  86. clickhouse_data: