services: mysql: image: mysql:8.0 container_name: wwjcloud-mysql restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: wwjcloud MYSQL_CHARACTER_SET_SERVER: utf8mb4 MYSQL_COLLATION_SERVER: utf8mb4_general_ci ports: - "3306:3306" volumes: - mysql_data:/var/lib/mysql # 先不挂载schema.sql,让应用程序自动创建表 command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci networks: - wwjcloud-network redis: image: redis:7-alpine container_name: wwjcloud-redis restart: unless-stopped ports: - "6379:6379" volumes: - redis_data:/data command: redis-server --appendonly yes --requirepass "" networks: - wwjcloud-network # WWJCloud 应用程序容器 (可选,用于生产部署) app: build: context: . dockerfile: Dockerfile container_name: wwjcloud-app restart: unless-stopped ports: - "3001:3001" environment: - NODE_ENV=production - DB_HOST=mysql - DB_PORT=3306 - DB_USERNAME=root - DB_PASSWORD=root - DB_DATABASE=wwjcloud - REDIS_HOST=redis - REDIS_PORT=6379 depends_on: - mysql - redis networks: - wwjcloud-network profiles: - production # 使用 profile 来控制是否启动应用容器 volumes: mysql_data: redis_data: networks: wwjcloud-network: driver: bridge