version: '3.8' networks: aishej_dev_network: driver: bridge services: mysql: image: mysql:8.0 container_name: aishej_mysql_dev restart: always networks: - aishej_dev_network environment: MYSQL_ROOT_PASSWORD: rootpassword123 MYSQL_DATABASE: aishej_dev MYSQL_USER: aishej_dev MYSQL_PASSWORD: aishej_dev_123 ports: - "3307:3306" # 使用3307端口避免冲突 volumes: - mysql_data:/var/lib/mysql - ./init_mysql.sql:/docker-entrypoint-initdb.d/init.sql command: --default-authentication-plugin=mysql_native_password healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] timeout: 5s retries: 10 api: build: . container_name: aishej_api_dev restart: always networks: - aishej_dev_network ports: - "8001:8001" # 使用8001端口避免冲突 volumes: - ./app:/app/app # 挂载整个app目录 - ./uploads:/app/uploads - ./seed_data.py:/app/seed_data.py - ./download_test_images.py:/app/download_test_images.py environment: DATABASE_URL: mysql+pymysql://aishej_dev:aishej_dev_123@mysql:3306/aishej_dev API_PORT: "8001" PYTHONUNBUFFERED: "1" # Python不缓冲输出 depends_on: mysql: condition: service_healthy command: sh -c "sleep 10 && uvicorn app.main:app --host 0.0.0.0 --port 8001 --reload" volumes: mysql_data: name: aishej_dev_mysql_data