400 lines
7.3 KiB
Markdown
400 lines
7.3 KiB
Markdown
# 🐳 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 带来的便捷部署体验!** 🚀
|
||
|