version: '3.8' services: # MySQL 数据库 mysql: image: mysql:8.0 container_name: amazingdata-mysql restart: always environment: MYSQL_ROOT_PASSWORD: root123 MYSQL_DATABASE: amazingdata_platform MYSQL_USER: amazingdata MYSQL_PASSWORD: amazingdata123 ports: - "3307:3306" volumes: - mysql_data:/var/lib/mysql - ./database/init.sql:/docker-entrypoint-initdb.d/init.sql command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] timeout: 20s retries: 10 # 后端服务 backend: build: context: . dockerfile: Dockerfile.backend container_name: amazingdata-backend restart: always ports: - "8000:8000" environment: - DB_HOST=mysql - DB_PORT=3306 - DB_USER=amazingdata - DB_PASSWORD=amazingdata123 - DB_NAME=amazingdata_platform - AMAZING_DATA_USERNAME=${AMAZING_DATA_USERNAME:-11200008169} - AMAZING_DATA_PASSWORD=${AMAZING_DATA_PASSWORD:-11200008169@2026} - AMAZING_DATA_HOST=${AMAZING_DATA_HOST:-140.206.44.234} - AMAZING_DATA_PORT=${AMAZING_DATA_PORT:-8600} - SECRET_KEY=${SECRET_KEY:-your-secret-key} - JWT_SECRET_KEY=${JWT_SECRET_KEY:-your-jwt-secret-key} volumes: - ./data:/app/data depends_on: mysql: condition: service_healthy command: uvicorn backend.main:app --host 0.0.0.0 --port 8000 # 前端服务 frontend: build: context: . dockerfile: Dockerfile.frontend container_name: amazingdata-frontend restart: always ports: - "3000:80" depends_on: - backend volumes: mysql_data: driver: local