增加支持docker部署
This commit is contained in:
@@ -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 带来的便捷部署体验!** 🚀
|
||||
|
||||
Reference in New Issue
Block a user