version: '3.8' services: # MySQL 数据库 mysql: image: mysql:8.0 container_name: medicine_llm_db environment: MYSQL_ROOT_PASSWORD: root123 MYSQL_DATABASE: medicine_llm MYSQL_USER: chatuser MYSQL_PASSWORD: chatpass ports: - "3307:3306" volumes: - mysql_data:/var/lib/mysql networks: - medicine_llm_network restart: unless-stopped command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci # 后端 FastAPI 应用 backend: build: context: ./backend dockerfile: Dockerfile container_name: medicine_llm_backend environment: - DATABASE_URL=mysql+pymysql://chatuser:chatpass@mysql:3306/medicine_llm - SECRET_KEY=your-secret-key-change-in-production - OPENAI_API_KEY=${OPENAI_API_KEY} - OPENAI_BASE_URL=${OPENAI_BASE_URL:-https://api.openai.com/v1} ports: - "8000:8000" depends_on: - mysql networks: - medicine_llm_network restart: unless-stopped volumes: - ./backend:/app command: uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload # 前端 Vue3 应用 frontend: build: context: ./frontend dockerfile: Dockerfile container_name: medicine_llm_frontend ports: - "3000:80" depends_on: - backend networks: - medicine_llm_network restart: unless-stopped volumes: mysql_data: networks: medicine_llm_network: driver: bridge