Files
AI-VideoAssistant/docs/content/deployment/docker.md

162 lines
2.4 KiB
Markdown

# 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`