version: '3.8' services: # 应用服务(前端+后端) app: image: registry.cn-hangzhou.aliyuncs.com/yvan329/quanyoumi-app:0.0.1 container_name: quanyoumi-app restart: unless-stopped ports: - "3000:3000" environment: - NODE_ENV=production - PORT=3000 # 数据库配置 - DB_HOST=db - DB_PORT=3306 - DB_USER=root - DB_PASSWORD=quanyoumi2024 - DB_NAME=quanyoumi # JWT 密钥(请修改为随机字符串) - JWT_SECRET=quanyoumi_jwt_secret_change_this_in_production_2024 # 高德地图配置(必填) - AMAP_KEY=fd5b77136ba34fe6b4f0f86dca7782d9 - AMAP_SECURITY_CODE=7f61638e5635d944a534ff747dc615ac # MinIO 配置 - MINIO_ENDPOINT=minio - MINIO_PORT=9000 - MINIO_ACCESS_KEY=minioadmin - MINIO_SECRET_KEY=minioadmin123 - MINIO_BUCKET=quanyoumi volumes: - app-uploads:/app/uploads depends_on: - db - minio networks: - quanyoumi-network healthcheck: test: ["CMD", "node", "-e", "require('http').get('http://localhost:3000/api/activities', (r) => process.exit(r.statusCode === 200 ? 0 : 1))"] interval: 30s timeout: 3s retries: 3 start_period: 10s # MySQL 数据库 db: image: mysql:8.0 container_name: quanyoumi-db restart: unless-stopped environment: - MYSQL_ROOT_PASSWORD=quanyoumi2024 - MYSQL_DATABASE=quanyoumi - MYSQL_CHARACTER_SET_SERVER=utf8mb4 - MYSQL_COLLATION_SERVER=utf8mb4_unicode_ci volumes: - mysql-data:/var/lib/mysql - ./database.sql:/docker-entrypoint-initdb.d/init.sql networks: - quanyoumi-network healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-pquanyoumi2024"] interval: 10s timeout: 5s retries: 5 start_period: 30s # MinIO 对象存储 minio: image: minio/minio:latest container_name: quanyoumi-minio restart: unless-stopped command: server /data --console-address ":9001" environment: - MINIO_ROOT_USER=minioadmin - MINIO_ROOT_PASSWORD=minioadmin123 volumes: - minio-data:/data ports: - "9001:9001" networks: - quanyoumi-network healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 30s timeout: 20s retries: 3 start_period: 10s volumes: mysql-data: driver: local minio-data: driver: local app-uploads: driver: local networks: quanyoumi-network: driver: bridge