Files
aiagents-stock/docs/DOCKER_DEPLOYMENT.md
T

400 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🐳 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 带来的便捷部署体验!** 🚀