docker-compose.yml 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. services:
  2. # MongoDB数据库
  3. mongodb:
  4. image: mongo:6.0
  5. container_name: ecommerce-mongodb
  6. restart: unless-stopped
  7. ports:
  8. - "27017:27017"
  9. environment:
  10. MONGO_INITDB_ROOT_USERNAME: admin
  11. MONGO_INITDB_ROOT_PASSWORD: admin123
  12. MONGO_INITDB_DATABASE: ecommerce_dev
  13. volumes:
  14. - mongodb_data:/data/db
  15. - ./docker/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
  16. networks:
  17. - ecommerce-network
  18. # Redis缓存
  19. redis:
  20. image: redis:7.0-alpine
  21. container_name: ecommerce-redis
  22. restart: unless-stopped
  23. ports:
  24. - "6379:6379"
  25. command: redis-server --appendonly yes
  26. volumes:
  27. - redis_data:/data
  28. networks:
  29. - ecommerce-network
  30. # Elasticsearch搜索引擎
  31. elasticsearch:
  32. image: elasticsearch:8.11.0
  33. container_name: ecommerce-elasticsearch
  34. restart: unless-stopped
  35. ports:
  36. - "9200:9200"
  37. - "9300:9300"
  38. environment:
  39. - discovery.type=single-node
  40. - xpack.security.enabled=false
  41. - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
  42. volumes:
  43. - elasticsearch_data:/usr/share/elasticsearch/data
  44. networks:
  45. - ecommerce-network
  46. # Parse Server
  47. parse-server:
  48. build:
  49. context: .
  50. dockerfile: Dockerfile.parse
  51. container_name: ecommerce-parse-server
  52. restart: unless-stopped
  53. ports:
  54. - "1337:1337"
  55. environment:
  56. PARSE_SERVER_APPLICATION_ID: ${PARSE_APP_ID}
  57. PARSE_SERVER_MASTER_KEY: ${PARSE_MASTER_KEY}
  58. PARSE_SERVER_DATABASE_URI: mongodb://admin:admin123@mongodb:27017/ecommerce_dev?authSource=admin
  59. PARSE_SERVER_REDIS_URL: redis://redis:6379
  60. depends_on:
  61. - mongodb
  62. - redis
  63. networks:
  64. - ecommerce-network
  65. # 后端API服务
  66. backend:
  67. build:
  68. context: .
  69. dockerfile: Dockerfile
  70. target: development
  71. container_name: ecommerce-backend
  72. restart: unless-stopped
  73. ports:
  74. - "3000:3000"
  75. - "9229:9229" # Node.js调试端口
  76. environment:
  77. NODE_ENV: development
  78. PORT: 3000
  79. MONGODB_URI: mongodb://admin:admin123@mongodb:27017/ecommerce_dev?authSource=admin
  80. REDIS_HOST: redis
  81. REDIS_PORT: 6379
  82. ELASTICSEARCH_NODE: http://elasticsearch:9200
  83. PARSE_SERVER_URL: http://parse-server:1337/parse
  84. volumes:
  85. - ./src:/app/src
  86. - ./package.json:/app/package.json
  87. - ./tsconfig.json:/app/tsconfig.json
  88. - /app/node_modules
  89. depends_on:
  90. - mongodb
  91. - redis
  92. - parse-server
  93. networks:
  94. - ecommerce-network
  95. command: npm run dev
  96. volumes:
  97. mongodb_data:
  98. redis_data:
  99. elasticsearch_data:
  100. networks:
  101. ecommerce-network:
  102. driver: bridge