version: '3.3' services: # Flask应用服务 app: build: context: . dockerfile: Dockerfile image: flask-prompt-master:latest container_name: flask-prompt-master-app restart: unless-stopped environment: - FLASK_ENV=production - DATABASE_URL=mysql+pymysql://root:${MYSQL_ROOT_PASSWORD}@mysql:3306/${MYSQL_DATABASE}?charset=utf8mb4 - REDIS_URL=redis://redis:6379/0 - SECRET_KEY=${SECRET_KEY} - LLM_API_KEY=${LLM_API_KEY} depends_on: - mysql - redis volumes: - ./logs:/app/logs - ./uploads:/app/uploads networks: - app-network # MySQL数据库 mysql: image: mysql:8.0 container_name: flask-prompt-master-mysql restart: unless-stopped environment: - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} - MYSQL_DATABASE=${MYSQL_DATABASE} - MYSQL_USER=${MYSQL_USER} - MYSQL_PASSWORD=${MYSQL_PASSWORD} volumes: - mysql_data:/var/lib/mysql networks: - app-network # Redis缓存 redis: image: redis:7-alpine container_name: flask-prompt-master-redis restart: unless-stopped command: redis-server --appendonly yes volumes: - redis_data:/data networks: - app-network # Nginx反向代理 nginx: image: nginx:alpine container_name: flask-prompt-master-nginx restart: unless-stopped ports: - "80:80" - "443:443" volumes: - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf - ./logs/nginx:/var/log/nginx depends_on: - app networks: - app-network volumes: mysql_data: driver: local redis_data: driver: local networks: app-network: driver: bridge