services: app: build: . container_name: quanyixiaozhushou-app restart: unless-stopped ports: - "3000:3000" environment: - PORT=3000 - NODE_ENV=production - WECHAT_APPID=wxa83262674846ca1a - WECHAT_APPSECRET=365653aa1214a5523a6a0e7d793eec6a - MONGODB_URI=mongodb://mongo:27017/quanyixiaozhushou - JWT_SECRET=your_jwt_secret_key_here_change_in_production - JWT_EXPIRES_IN=7d - LOG_LEVEL=info - BAIDU_OCR_API_KEY=IfYLOLzL6X60h5UOdnkX6OmT - BAIDU_OCR_SECRET_KEY=wGXbp6DwazDghJ1EXtjAT7XAFwJLqVD4 - SERVER_URL=https://api-miniapp.dxz99wyr.cn - EXPORT_ENCRYPT_KEY=QuanYiXiaoZhuShou_2026_Secret_Key - ADMIN_KEY=quanyiAdmin2026 volumes: - uploads_data:/app/public/uploads - ./public/avatars:/app/public/avatars depends_on: mongo: condition: service_healthy healthcheck: test: ["CMD", "node", "-e", "require('http').get('http://localhost:3000/health', (r) => {process.exit(r.statusCode === 200 ? 0 : 1)})"] interval: 30s timeout: 10s retries: 3 start_period: 30s mongo: image: mongo:7.0 container_name: quanyixiaozhushou-mongo restart: unless-stopped ports: - "27018:27017" volumes: - mongo_data:/data/db environment: - MONGO_INITDB_DATABASE=quanyixiaozhushou healthcheck: test: echo 'db.runCommand("ping").ok' | mongosh --quiet interval: 10s timeout: 5s retries: 5 start_period: 20s volumes: uploads_data: mongo_data: