services: # MongoDB数据库 mongodb: image: mongo:6.0 container_name: ecommerce-mongodb restart: unless-stopped ports: - "27017:27017" environment: MONGO_INITDB_ROOT_USERNAME: admin MONGO_INITDB_ROOT_PASSWORD: admin123 MONGO_INITDB_DATABASE: ecommerce_dev volumes: - mongodb_data:/data/db - ./docker/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro networks: - ecommerce-network # Redis缓存 redis: image: redis:7.0-alpine container_name: ecommerce-redis restart: unless-stopped ports: - "6379:6379" command: redis-server --appendonly yes volumes: - redis_data:/data networks: - ecommerce-network # Elasticsearch搜索引擎 elasticsearch: image: elasticsearch:8.11.0 container_name: ecommerce-elasticsearch restart: unless-stopped ports: - "9200:9200" - "9300:9300" environment: - discovery.type=single-node - xpack.security.enabled=false - "ES_JAVA_OPTS=-Xms512m -Xmx512m" volumes: - elasticsearch_data:/usr/share/elasticsearch/data networks: - ecommerce-network # Parse Server parse-server: build: context: . dockerfile: Dockerfile.parse container_name: ecommerce-parse-server restart: unless-stopped ports: - "1337:1337" environment: PARSE_SERVER_APPLICATION_ID: ${PARSE_APP_ID} PARSE_SERVER_MASTER_KEY: ${PARSE_MASTER_KEY} PARSE_SERVER_DATABASE_URI: mongodb://admin:admin123@mongodb:27017/ecommerce_dev?authSource=admin PARSE_SERVER_REDIS_URL: redis://redis:6379 depends_on: - mongodb - redis networks: - ecommerce-network # 后端API服务 backend: build: context: . dockerfile: Dockerfile target: development container_name: ecommerce-backend restart: unless-stopped ports: - "3000:3000" - "9229:9229" # Node.js调试端口 environment: NODE_ENV: development PORT: 3000 MONGODB_URI: mongodb://admin:admin123@mongodb:27017/ecommerce_dev?authSource=admin REDIS_HOST: redis REDIS_PORT: 6379 ELASTICSEARCH_NODE: http://elasticsearch:9200 PARSE_SERVER_URL: http://parse-server:1337/parse volumes: - ./src:/app/src - ./package.json:/app/package.json - ./tsconfig.json:/app/tsconfig.json - /app/node_modules depends_on: - mongodb - redis - parse-server networks: - ecommerce-network command: npm run dev volumes: mongodb_data: redis_data: elasticsearch_data: networks: ecommerce-network: driver: bridge