version: "3.8" services: # === MySQL === mysql: image: mysql:8.0 container_name: doc-forge-mysql restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: root123 MYSQL_DATABASE: doc_forge MYSQL_USER: docforge MYSQL_PASSWORD: docforge123 ports: - "3306:3306" volumes: - mysql_data:/var/lib/mysql - ./init.sql:/docker-entrypoint-initdb.d/init.sql command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci # === MinIO(对象存储)=== minio: image: minio/minio:latest container_name: doc-forge-minio restart: unless-stopped command: server /data --console-address ":9001" environment: MINIO_ROOT_USER: docforge MINIO_ROOT_PASSWORD: docforge123 ports: - "9000:9000" # API - "9001:9001" # Console volumes: - minio_data:/data healthcheck: test: ["CMD", "mc", "ready", "local"] interval: 10s timeout: 5s retries: 3 # === 后端 === backend: build: ./backend container_name: doc-forge-backend restart: unless-stopped depends_on: mysql: condition: service_started minio: condition: service_healthy environment: DB_HOST: mysql DB_PORT: 3306 DB_USER: docforge DB_PASSWORD: docforge123 DB_NAME: doc_forge MINIO_ENDPOINT: minio:9000 MINIO_ACCESS_KEY: docforge MINIO_SECRET_KEY: docforge123 ENCRYPTION_KEY: "${ENCRYPTION_KEY}" ports: - "8000:8000" volumes: - ./backend:/app - local_cache:/app/local_cache # === 前端 === web: build: ./web container_name: doc-forge-web restart: unless-stopped depends_on: - backend ports: - "5173:80" volumes: mysql_data: minio_data: local_cache: