fix: 修改docker打包文件

alphaFuthures
Lxy 1 week ago
parent 4582bc5d0e
commit 3e2dcfbced

@ -1,56 +1,62 @@
# 数据缓冲平台 Docker 部署文档 # 期货智析缓冲平台 - Docker部署文档
## 目录结构 ## 目录结构
``` ```
buffer_platform/ buffer_platform/
├── app/ # 应用代码 ├── app/ # 应用代码
├── config/ # 配置文件 ├── static/ # 前端静态文件
├── data/ # 本地数据目录 ├── data/ # 本地数据目录(开发用)
├── Dockerfile # Docker 镜像构建文件 ├── Dockerfile # Docker镜像构建文件
├── docker-compose.yml # Docker Compose 配置文件 ├── docker-compose.yml # Docker Compose配置文件
├── .dockerignore # Docker 构建忽略文件 ├── .env # 环境变量配置
└── requirements.txt # Python 依赖 ├── .dockerignore # Docker构建忽略文件
├── requirements.txt # Python依赖
├── deploy.bat # 一键部署脚本
├── start.bat # 启动服务
├── stop.bat # 停止服务
├── logs.bat # 查看日志
└── backup.bat # 数据库备份
``` ```
## 环境要求 ## 环境要求
- Docker Desktop for Windows - Docker Desktop for Windows
- Docker Compose v3.8+ - Docker Compose v3.8+
- Windows 10/11 或 Windows Server - Windows 10/11
## 快速部署 ## 快速部署
### 1. 构建并启动容器 ### 方式一:一键部署(推荐)
```powershell ```powershell
cd d:\alpha_workspace\buffer_platform cd e:\docker_workspace\cobot2.0_WorkHorse\app\working\workspaces\default\share_data\project\market_data_colector_platform\buffer_platform
docker-compose up -d --build deploy.bat
``` ```
### 2. 查看容器状态 ### 方式二:手动部署
```powershell ```powershell
docker-compose ps # 1. 创建数据目录
``` mkdir E:\docker_workspace\futures_datas
mkdir E:\docker_workspace\futures_datas\logs
### 3. 查看日志
```powershell # 2. 构建并启动
# 查看实时日志 docker-compose up -d --build
docker-compose logs -f
# 查看最近 100 行日志 # 3. 查看状态
docker-compose logs --tail=100 docker-compose ps
``` ```
## 访问地址 ## 访问地址
| 服务 | 地址 | | 页面 | 地址 |
|------|------| |------|------|
| 前端页面 | http://localhost:9600/ui | | **品种分析** | http://localhost:9600/futures-analysis |
| API 文档 | http://localhost:9600/docs | | **配置管理** | http://localhost:9600/ui |
| 健康检查 | http://localhost:9600/api/v1/health | | **AI配置** | http://localhost:9600/ai-config |
| **API文档** | http://localhost:9600/docs |
| **健康检查** | http://localhost:9600/api/v1/health |
## 数据持久化 ## 数据持久化
@ -58,7 +64,8 @@ docker-compose logs --tail=100
| 宿主机路径 | 容器路径 | 说明 | | 宿主机路径 | 容器路径 | 说明 |
|-----------|----------|------| |-----------|----------|------|
| `E:\docker_workspace\futures_datas` | `/app/data` | SQLite 数据库及缓存数据 | | `E:\docker_workspace\futures_datas` | `/app/data` | SQLite数据库及缓存数据 |
| `E:\docker_workspace\futures_datas\logs` | `/app/logs` | 日志文件 |
### 数据目录结构 ### 数据目录结构
@ -66,67 +73,58 @@ docker-compose logs --tail=100
``` ```
E:\docker_workspace\futures_datas\ E:\docker_workspace\futures_datas\
└── buffer.db # SQLite 数据库文件 ├── buffer.db # SQLite数据库文件
├── futures_analysis.db # AI分析数据库
└── logs/ # 日志目录
└── (应用日志文件)
``` ```
## 常用操作 ## 常用管理命令
### 停止服务 ### 使用批处理脚本
```powershell ```powershell
docker-compose stop deploy.bat # 一键部署
start.bat # 启动服务
stop.bat # 停止服务
logs.bat # 查看日志
backup.bat # 数据库备份
``` ```
### 启动服务 ### 使用Docker Compose命令
```powershell ```powershell
# 启动服务
docker-compose start docker-compose start
```
### 重启服务 # 停止服务
docker-compose stop
```powershell # 重启服务
docker-compose restart docker-compose restart
```
### 停止并删除容器
```powershell
docker-compose down
```
### 停止并删除容器及数据卷 # 查看状态
docker-compose ps
> ⚠️ 警告:此操作将删除所有持久化数据!
```powershell # 查看日志
docker-compose down -v docker-compose logs -f
```
### 重新构建并启动 # 停止并删除容器
docker-compose down
```powershell # 重新构建并启动
docker-compose up -d --build docker-compose up -d --build
``` ```
### 更新镜像
```powershell
# 拉取最新代码后
docker-compose down
docker-compose build --no-cache
docker-compose up -d
```
## 环境变量配置 ## 环境变量配置
可在 `docker-compose.yml` 中修改以下环境变量 可在 `.env` 文件或 `docker-compose.yml` 中修改:
| 变量名 | 默认值 | 说明 | | 变量名 | 默认值 | 说明 |
|--------|--------|------| |--------|--------|------|
| `BUFFER_DB_PATH` | `/app/data/buffer.db` | 数据库文件路径 | | `BUFFER_DB_PATH` | `/app/data/buffer.db` | 数据库文件路径 |
| `BUFFER_HOST` | `0.0.0.0` | 服务监听地址 | | `BUFFER_HOST` | `0.0.0.0` | 服务监听地址 |
| `BUFFER_PORT` | `8600` | 容器内服务端口 | | `BUFFER_PORT` | `8600` | 容器内端口 |
| `CACHE_TTL` | `300` | 缓存过期时间(秒) | | `CACHE_TTL` | `300` | 缓存过期时间(秒) |
| `BUFFER_LOG_LEVEL` | `INFO` | 日志级别 | | `BUFFER_LOG_LEVEL` | `INFO` | 日志级别 |
| `MAX_WORKERS` | `2` | 并发采集数 | | `MAX_WORKERS` | `2` | 并发采集数 |
@ -137,19 +135,25 @@ docker-compose up -d
```yaml ```yaml
ports: ports:
- "9600:8600" # 修改 9600 为其他端口 - "9600:8600" # 将9600改为其他端口
``` ```
## 数据备份 ## 数据备份与恢复
### 方式一:使用备份脚本
### 备份数据库 ```powershell
backup.bat
```
### 方式二:手动备份
```powershell ```powershell
# 停止服务 # 停止服务
docker-compose stop docker-compose stop
# 复制数据文件 # 复制数据
xcopy E:\docker_workspace\futures_datas\buffer.db E:\backup\buffer_$(Get-Date -Format 'yyyyMMdd').db xcopy E:\docker_workspace\futures_datas\buffer.db E:\backup\buffer_%date:~0,4%%date:~5,2%%date:~8,2%.db
# 启动服务 # 启动服务
docker-compose start docker-compose start
@ -161,8 +165,8 @@ docker-compose start
# 停止服务 # 停止服务
docker-compose stop docker-compose stop
# 复制备份文件到数据目录 # 恢复数据库
copy E:\backup\buffer_20260517.db E:\docker_workspace\futures_datas\buffer.db copy E:\backup\buffer_20260523.db E:\docker_workspace\futures_datas\buffer.db
# 启动服务 # 启动服务
docker-compose start docker-compose start
@ -178,40 +182,50 @@ docker-compose logs
# 检查容器状态 # 检查容器状态
docker ps -a docker ps -a
# 删除容器重新构建
docker-compose down
docker-compose up -d --build
```
### 端口冲突
```powershell
# 检查端口占用
netstat -ano | findstr "9600"
# 修改docker-compose.yml中的端口映射
``` ```
### 数据库权限问题 ### 数据库权限问题
确保 `E:\docker_workspace\futures_datas` 目录存在且有写入权限: 确保数据目录存在
```powershell ```powershell
# 创建数据目录
mkdir E:\docker_workspace\futures_datas mkdir E:\docker_workspace\futures_datas
mkdir E:\docker_workspace\futures_datas\logs
``` ```
### 端口冲突 ### 进入容器
```powershell ```powershell
# 检查端口占用 docker exec -it futures-buffer-platform /bin/bash
netstat -ano | findstr "9600"
``` ```
### 进入容器 ### 查看资源使用
```powershell ```powershell
docker exec -it buffer-platform /bin/bash docker stats futures-buffer-platform
``` ```
## 健康检查 ## 健康检查
服务内置健康检查端点:
```powershell ```powershell
# PowerShell # PowerShell
Invoke-WebRequest -Uri http://localhost:9600/api/v1/health Invoke-WebRequest -Uri http://localhost:9600/api/v1/health
# 或使用 curl # 浏览器访问
curl http://localhost:9600/api/v1/health http://localhost:9600/api/v1/health
``` ```
正常响应: 正常响应:
@ -222,3 +236,48 @@ curl http://localhost:9600/api/v1/health
"service": "market-data-buffer" "service": "market-data-buffer"
} }
``` ```
## 更新应用
```powershell
# 1. 备份数据库
backup.bat
# 2. 停止服务
docker-compose stop
# 3. 删除旧容器
docker-compose rm -f
# 4. 重新构建
docker-compose build --no-cache
# 5. 启动新容器
docker-compose up -d
# 6. 验证服务
curl http://localhost:9600/api/v1/health
```
## 安全建议
1. **定期备份数据库** - 使用 `backup.bat` 定期备份
2. **监控日志** - 使用 `logs.bat` 查看异常
3. **限制端口访问** - 防火墙只开放必要端口
4. **数据目录权限** - 确保数据目录有适当权限
## 技术支持
遇到问题请查看日志:
```powershell
logs.bat
```
或进入容器检查:
```powershell
docker exec -it futures-buffer-platform /bin/bash
cd /app/logs
ls -la
```

@ -21,8 +21,11 @@ RUN pip install --no-cache-dir -r requirements.txt -i https://mirrors.aliyun.com
COPY . . COPY . .
RUN mkdir -p /app/data RUN mkdir -p /app/data /app/logs
EXPOSE 8600 EXPOSE 8600
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8600"] HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD curl -f http://localhost:8600/api/v1/health || exit 1
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8600", "--log-level", "info"]

@ -2,22 +2,34 @@ version: '3.8'
services: services:
buffer-platform: buffer-platform:
build: . build:
container_name: buffer-platform context: .
dockerfile: Dockerfile
container_name: futures-buffer-platform
restart: unless-stopped
ports: ports:
- "9600:8600" - "9600:8600"
volumes:
- E:\docker_workspace\futures_datas:/app/data
environment: environment:
- BUFFER_DB_PATH=/app/data/buffer.db - BUFFER_DB_PATH=/app/data/buffer.db
- BUFFER_HOST=0.0.0.0 - BUFFER_HOST=0.0.0.0
- BUFFER_PORT=8600 - BUFFER_PORT=8600
- CACHE_TTL=300 - CACHE_TTL=300
- BUFFER_LOG_LEVEL=INFO - BUFFER_LOG_LEVEL=INFO
restart: unless-stopped - MAX_WORKERS=2
volumes:
# 数据持久化 - SQLite数据库
- E:\docker_workspace\futures_datas:/app/data
# 日志持久化(可选)
- E:\docker_workspace\futures_datas\logs:/app/logs
healthcheck: healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8600/api/v1/health')"] test: ["CMD", "curl", "-f", "http://localhost:8600/api/v1/health"]
interval: 30s interval: 30s
timeout: 10s timeout: 10s
retries: 3 retries: 3
start_period: 40s start_period: 10s
networks:
- futures-network
networks:
futures-network:
driver: bridge

Loading…
Cancel
Save