# Docker 部署 Docker 是推荐的部署方式,可以快速启动服务并确保环境一致性。 ## 前提条件 - Docker 20.10+ - Docker Compose 2.0+(可选) ## 构建镜像 ### Web 前端 ```bash docker build -t ai-video-assistant-web ./web ``` ### API 服务 ```bash docker build -t ai-video-assistant-api ./api ``` ### Engine 服务 ```bash docker build -t ai-video-assistant-engine ./engine ``` ## 运行容器 ### 单独运行 ```bash # Web 前端 docker run -d \ --name ai-assistant-web \ -p 3000:80 \ ai-video-assistant-web # API 服务 docker run -d \ --name ai-assistant-api \ -p 8080:8080 \ ai-video-assistant-api # Engine 服务 docker run -d \ --name ai-assistant-engine \ -p 8000:8000 \ ai-video-assistant-engine ``` ## Docker Compose 推荐使用 Docker Compose 管理多个服务: ```yaml version: '3.8' services: web: build: ./web ports: - "3000:80" environment: - VITE_API_URL=http://api:8080 depends_on: - api api: build: ./api ports: - "8080:8080" environment: - DATABASE_URL=postgresql://postgres:password@db:5432/ai_assistant depends_on: - db engine: build: ./engine ports: - "8000:8000" environment: - BACKEND_URL=http://api:8080 db: image: postgres:15 environment: - POSTGRES_DB=ai_assistant - POSTGRES_PASSWORD=password volumes: - postgres_data:/var/lib/postgresql/data volumes: postgres_data: ``` ### 启动服务 ```bash # 启动所有服务 docker-compose up -d # 查看日志 docker-compose logs -f # 停止服务 docker-compose down ``` ## 镜像优化 ### 多阶段构建 Web 前端 Dockerfile 示例: ```dockerfile # 构建阶段 FROM node:18-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build # 运行阶段 FROM nginx:alpine COPY --from=builder /app/dist /usr/share/nginx/html COPY nginx.conf /etc/nginx/nginx.conf EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] ``` ## 健康检查 ```yaml services: api: healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/health"] interval: 30s timeout: 10s retries: 3 ``` ## 常见问题 ### 容器启动失败 ```bash # 查看容器日志 docker logs ai-assistant-web # 进入容器调试 docker exec -it ai-assistant-web sh ``` ### 端口冲突 修改 `docker-compose.yml` 中的端口映射,例如 `3001:80`。