version: '3.8' services: app: build: context: . dockerfile: Dockerfile container_name: ai-dressing-app restart: always ports: - "9001:8000" env_file: - ./.env # 环境变量可以覆盖.env文件中的值 environment: - ENV=development - DB_HOST=db - DB_PORT=3306 - DB_USER=ai_user - DB_PASSWORD=yourpassword - DB_NAME=ai_dressing # 这些环境变量会从宿主机的环境变量中读取,如果不存在则使用示例值 - DASHSCOPE_API_KEY=${DASHSCOPE_API_KEY:-your_dashscope_api_key} - QCLOUD_SECRET_ID=${QCLOUD_SECRET_ID:-your_qcloud_secret_id} - QCLOUD_SECRET_KEY=${QCLOUD_SECRET_KEY:-your_qcloud_secret_key} - QCLOUD_COS_REGION=${QCLOUD_COS_REGION:-ap-chengdu} - QCLOUD_COS_BUCKET=${QCLOUD_COS_BUCKET:-your-bucket-name} - QCLOUD_COS_DOMAIN=${QCLOUD_COS_DOMAIN:-https://your-bucket-domain.com} - PYTHONPATH=/app volumes: - .:/app - ./data/uploads:/app/uploads depends_on: - db healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 30s timeout: 10s retries: 3 start_period: 10s networks: - ai-dressing-network db: image: mysql:8.0 container_name: ai-dressing-db restart: always environment: - MYSQL_ROOT_PASSWORD=rootpassword - MYSQL_DATABASE=ai_dressing - MYSQL_USER=ai_user - MYSQL_PASSWORD=yourpassword ports: - "3306:3306" volumes: - mysql-data:/var/lib/mysql - ./init-scripts:/docker-entrypoint-initdb.d command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p$$MYSQL_ROOT_PASSWORD"] interval: 5s timeout: 5s retries: 10 networks: - ai-dressing-network adminer: image: adminer container_name: ai-dressing-adminer restart: always ports: - "8080:8080" environment: - ADMINER_DEFAULT_SERVER=db depends_on: - db networks: - ai-dressing-network volumes: mysql-data: networks: ai-dressing-network: driver: bridge