增加支持docker部署

This commit is contained in:
oficcejo
2025-10-09 08:01:06 +08:00
parent 0c11a7b010
commit 64e7617c8c
18 changed files with 920 additions and 1585 deletions
+399
View File
@@ -0,0 +1,399 @@
# 🐳 Docker 部署指南
本文档详细说明如何使用 Docker 部署 AI 股票分析系统。
## 📋 前置要求
- Docker 20.10+
- Docker Compose 2.0+(可选,但推荐)
- 至少 2GB 可用磁盘空间
- DeepSeek API Key
### 安装 Docker
#### Windows
1. 下载并安装 [Docker Desktop for Windows](https://www.docker.com/products/docker-desktop/)
2. 启动 Docker Desktop
3. 确认安装成功:
```bash
docker --version
docker-compose --version
```
#### macOS
1. 下载并安装 [Docker Desktop for Mac](https://www.docker.com/products/docker-desktop/)
2. 启动 Docker Desktop
3. 确认安装成功:
```bash
docker --version
docker-compose --version
```
#### Linux
```bash
# Ubuntu/Debian
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo systemctl start docker
sudo systemctl enable docker
# 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker --version
docker-compose --version
```
## 🚀 快速开始
### 方法一:使用 Docker Compose(推荐)
1. **克隆或下载项目**
```bash
cd /path/to/agentsstock1
```
2. **配置环境变量**
```bash
# Windows (PowerShell)
Copy-Item .env.example .env
# Linux/macOS
cp .env.example .env
```
3. **编辑 `.env` 文件,填入您的配置**
```env
DEEPSEEK_API_KEY=sk-your-actual-api-key-here
EMAIL_ENABLED=false
# ... 其他配置
```
4. **启动服务**
```bash
docker-compose up -d
```
5. **访问应用**
打开浏览器访问:http://localhost:8503
6. **查看日志**
```bash
docker-compose logs -f
```
7. **停止服务**
```bash
docker-compose down
```
### 方法二:使用 Docker 命令
1. **构建镜像**
```bash
docker build -t agentsstock1:latest .
```
2. **创建数据目录**
```bash
mkdir -p data
```
3. **运行容器**
```bash
docker run -d \
--name agentsstock1 \
-p 8501:8501 \
-v $(pwd)/data:/app/data \
-v $(pwd)/.env:/app/.env \
-v $(pwd)/stock_analysis.db:/app/stock_analysis.db \
-v $(pwd)/stock_monitor.db:/app/stock_monitor.db \
-e TZ=Asia/Shanghai \
--restart unless-stopped \
agentsstock1:latest
```
**Windows PowerShell 用户请使用:**
```powershell
docker run -d `
--name agentsstock1 `
-p 8503:8501 `
-v ${PWD}/data:/app/data `
-v ${PWD}/.env:/app/.env `
-v ${PWD}/stock_analysis.db:/app/stock_analysis.db `
-v ${PWD}/stock_monitor.db:/app/stock_monitor.db `
-e TZ=Asia/Shanghai `
--restart unless-stopped `
agentsstock1:latest
```
4. **查看日志**
```bash
docker logs -f agentsstock1
```
5. **停止容器**
```bash
docker stop agentsstock1
docker rm agentsstock1
```
## 📁 数据持久化
Docker 部署会自动挂载以下目录/文件到宿主机:
- `./data` - 临时数据目录
- `./stock_analysis.db` - 分析历史数据库
- `./stock_monitor.db` - 监测数据库
- `./.env` - 环境变量配置
**重要**:即使删除容器,这些数据也会保留在宿主机上。
## 🔧 常用命令
### Docker Compose
```bash
# 启动服务(后台运行)
docker-compose up -d
# 启动服务(前台运行,可看日志)
docker-compose up
# 停止服务
docker-compose down
# 重启服务
docker-compose restart
# 查看日志
docker-compose logs -f
# 查看服务状态
docker-compose ps
# 重新构建并启动
docker-compose up -d --build
# 完全清理(包括volumes
docker-compose down -v
```
### Docker 命令
```bash
# 查看运行中的容器
docker ps
# 查看所有容器
docker ps -a
# 查看日志
docker logs agentsstock1
docker logs -f agentsstock1 # 实时日志
# 进入容器
docker exec -it agentsstock1 bash
# 重启容器
docker restart agentsstock1
# 停止容器
docker stop agentsstock1
# 启动已停止的容器
docker start agentsstock1
# 删除容器
docker rm agentsstock1
# 删除镜像
docker rmi agentsstock1:latest
# 查看镜像
docker images
# 查看容器资源使用
docker stats agentsstock1
```
## 🐛 故障排除
### 1. 容器启动失败
**检查日志**
```bash
docker-compose logs
# 或
docker logs agentsstock1
```
**常见原因**
- `.env` 文件未配置或配置错误
- 端口 8501 已被占用
- Docker 资源不足
### 2. 端口被占用
修改 `docker-compose.yml` 中的端口映射:
```yaml
ports:
- "8502:8501" # 改为其他端口
```
或在 docker run 命令中修改:
```bash
docker run ... -p 8502:8501 ...
```
### 3. 无法访问网页
**检查容器状态**
```bash
docker ps
```
**检查健康状态**
```bash
docker inspect agentsstock1 | grep Health -A 10
```
**检查网络**
```bash
# 确认端口映射
docker port agentsstock1
# 尝试从容器内访问
docker exec agentsstock1 curl http://localhost:8501
```
### 4. 数据库权限问题
Linux/macOS 用户可能遇到权限问题:
```bash
# 修改数据库文件权限
chmod 666 *.db
chmod 777 data/
```
### 5. Node.js 相关错误
如果遇到 pywencai 相关错误,进入容器检查:
```bash
docker exec -it agentsstock1 bash
node --version
npm --version
```
### 6. 内存不足
增加 Docker 可用内存(Docker Desktop → Settings → Resources):
- 推荐至少 4GB RAM
- 推荐至少 2GB Swap
或在 docker-compose.yml 中限制:
```yaml
services:
agentsstock:
# ... 其他配置
deploy:
resources:
limits:
memory: 2G
reservations:
memory: 1G
```
## 🔒 安全建议
1. **保护 .env 文件**
- 不要提交到 Git
- 设置适当的文件权限:`chmod 600 .env`
2. **使用 secrets(生产环境)**
```yaml
services:
agentsstock:
secrets:
- deepseek_api_key
environment:
- DEEPSEEK_API_KEY_FILE=/run/secrets/deepseek_api_key
secrets:
deepseek_api_key:
file: ./secrets/deepseek_api_key.txt
```
3. **定期更新镜像**
```bash
docker-compose pull
docker-compose up -d
```
## 🌐 反向代理(可选)
如需通过域名访问,可配置 Nginx:
```nginx
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:8501;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```
## 📊 性能优化
1. **使用构建缓存**
```bash
docker-compose build --no-cache # 清除缓存重建
```
2. **多阶段构建(高级)**
可以修改 Dockerfile 使用多阶段构建减小镜像体积。
3. **资源限制**
```yaml
services:
agentsstock:
deploy:
resources:
limits:
cpus: '2'
memory: 2G
```
## 📝 生产环境部署建议
1. 使用环境变量管理敏感信息
2. 配置日志轮转
3. 设置健康检查和自动重启
4. 使用 Docker volumes 而非 bind mounts
5. 配置备份策略(数据库文件)
6. 使用 HTTPS(配合 Nginx/Caddy
7. 配置防火墙规则
## 🆘 获取帮助
如遇到问题:
1. 查看日志:`docker-compose logs -f`
2. 检查容器状态:`docker ps -a`
3. 查看 GitHub Issues
4. 联系:ws3101001@126.com
---
**享受 Docker 带来的便捷部署体验!** 🚀