version: '3.8' services: # MySQL 数据库 mysql: image: mysql:8.0 container_name: huihui_mysql restart: always environment: MYSQL_ROOT_PASSWORD: root123456 MYSQL_DATABASE: huihui_ai_bot MYSQL_USER: huihui_user MYSQL_PASSWORD: huihui_password TZ: Asia/Shanghai ports: - "3306:3306" volumes: - ./data/mysql:/var/lib/mysql - ./docker/mysql/init.sql:/docker-entrypoint-initdb.d/init.sql command: - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci - --default-time-zone=+00:00 networks: - huihui_network healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] interval: 10s timeout: 5s retries: 5 # 后端应用服务 backend: build: context: ./backend dockerfile: Dockerfile container_name: huihui_backend restart: always env_file: - ./backend/.env environment: DATABASE_HOST: mysql DATABASE_PORT: 3306 DATABASE_USER: huihui_user DATABASE_PASSWORD: huihui_password DATABASE_NAME: huihui_ai_bot ports: - "8000:8000" volumes: - ./data/uploads:/app/data/uploads - ./data/logs:/app/data/logs depends_on: mysql: condition: service_healthy networks: - huihui_network command: > sh -c "sleep 10 && uvicorn app.main:app --host 0.0.0.0 --port 8000" # 前端服务(可选,如果需要独立部署前端) frontend: image: nginx:alpine container_name: huihui_frontend restart: always ports: - "80:80" volumes: - ./frontend/dist:/usr/share/nginx/html - ./docker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf depends_on: - backend networks: - huihui_network networks: huihui_network: driver: bridge volumes: mysql_data: