version: "3.10.11" # 应用服务 services: # 前端服务 frontend: container_name: frontend build: context: . dockerfile: frontend/Dockerfile ports: - "80:80" depends_on: - backend networks: - app-network # 后端服务 backend: # 容器名称 container_name: backend # 构建镜像 build: context: . dockerfile: build/Dockerfile # 端口映射 ports: - "8000:8000" environment: - MYSQL_HOST=mysql - MYSQL_PORT=3306 - MYSQL_USER=root - MYSQL_PASSWORD=123456 - MYSQL_DATABASE=fastapi_admin - REDIS_HOST=redis - REDIS_PORT=6379 - MONGODB_URL=mongodb://mongodb:27017/ depends_on: - mysql - redis - mongodb networks: - app-network restart: always # 数据库服务 mysql: container_name: mysql image: mysql:8.0 environment: - MYSQL_ROOT_PASSWORD=123456 - MYSQL_DATABASE=fastapi_admin ports: - "3306:3306" volumes: - mysql_data:/var/lib/mysql networks: - app-network # redis服务 redis: container_name: redis image: redis:latest ports: - "6379:6379" volumes: - redis_data:/data networks: - app-network # mongodb服务 mongodb: container_name: mongodb image: mongo:latest ports: - "27017:27017" volumes: - mongodb_data:/data/db networks: - app-network # nginx服务 nginx: container_name: nginx restart: always image: "nginx:latest" ports: - "5000:5000" volumes: - ./nginx:/etc/nginx/conf.d networks: - web_network depends_on: - flask_api # 网络 networks: db_network: driver: bridge web_network: driver: bridge app-network: driver: bridge # 文件挂载 volumes: mysql_data: redis_data: mongodb_data: