7.3 KiB
7.3 KiB
🐳 Docker 部署指南
本文档详细说明如何使用 Docker 部署 AI 股票分析系统。
📋 前置要求
- Docker 20.10+
- Docker Compose 2.0+(可选,但推荐)
- 至少 2GB 可用磁盘空间
- DeepSeek API Key
安装 Docker
Windows
- 下载并安装 Docker Desktop for Windows
- 启动 Docker Desktop
- 确认安装成功:
docker --version
docker-compose --version
macOS
- 下载并安装 Docker Desktop for Mac
- 启动 Docker Desktop
- 确认安装成功:
docker --version
docker-compose --version
Linux
# 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(推荐)
- 克隆或下载项目
cd /path/to/agentsstock1
- 配置环境变量
# Windows (PowerShell)
Copy-Item .env.example .env
# Linux/macOS
cp .env.example .env
- 编辑
.env文件,填入您的配置
DEEPSEEK_API_KEY=sk-your-actual-api-key-here
EMAIL_ENABLED=false
# ... 其他配置
- 启动服务
docker-compose up -d
-
访问应用 打开浏览器访问:http://localhost:8503
-
查看日志
docker-compose logs -f
- 停止服务
docker-compose down
方法二:使用 Docker 命令
- 构建镜像
docker build -t agentsstock1:latest .
- 创建数据目录
mkdir -p data
- 运行容器
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 用户请使用:
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
- 查看日志
docker logs -f agentsstock1
- 停止容器
docker stop agentsstock1
docker rm agentsstock1
📁 数据持久化
Docker 部署会自动挂载以下目录/文件到宿主机:
./data- 临时数据目录./stock_analysis.db- 分析历史数据库./stock_monitor.db- 监测数据库./.env- 环境变量配置
重要:即使删除容器,这些数据也会保留在宿主机上。
🔧 常用命令
Docker Compose
# 启动服务(后台运行)
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 命令
# 查看运行中的容器
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. 容器启动失败
检查日志:
docker-compose logs
# 或
docker logs agentsstock1
常见原因:
.env文件未配置或配置错误- 端口 8501 已被占用
- Docker 资源不足
2. 端口被占用
修改 docker-compose.yml 中的端口映射:
ports:
- "8502:8501" # 改为其他端口
或在 docker run 命令中修改:
docker run ... -p 8502:8501 ...
3. 无法访问网页
检查容器状态:
docker ps
检查健康状态:
docker inspect agentsstock1 | grep Health -A 10
检查网络:
# 确认端口映射
docker port agentsstock1
# 尝试从容器内访问
docker exec agentsstock1 curl http://localhost:8501
4. 数据库权限问题
Linux/macOS 用户可能遇到权限问题:
# 修改数据库文件权限
chmod 666 *.db
chmod 777 data/
5. Node.js 相关错误
如果遇到 pywencai 相关错误,进入容器检查:
docker exec -it agentsstock1 bash
node --version
npm --version
6. 内存不足
增加 Docker 可用内存(Docker Desktop → Settings → Resources):
- 推荐至少 4GB RAM
- 推荐至少 2GB Swap
或在 docker-compose.yml 中限制:
services:
agentsstock:
# ... 其他配置
deploy:
resources:
limits:
memory: 2G
reservations:
memory: 1G
🔒 安全建议
-
保护 .env 文件
- 不要提交到 Git
- 设置适当的文件权限:
chmod 600 .env
-
使用 secrets(生产环境)
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
- 定期更新镜像
docker-compose pull
docker-compose up -d
🌐 反向代理(可选)
如需通过域名访问,可配置 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;
}
}
📊 性能优化
- 使用构建缓存
docker-compose build --no-cache # 清除缓存重建
-
多阶段构建(高级) 可以修改 Dockerfile 使用多阶段构建减小镜像体积。
-
资源限制
services:
agentsstock:
deploy:
resources:
limits:
cpus: '2'
memory: 2G
📝 生产环境部署建议
- 使用环境变量管理敏感信息
- 配置日志轮转
- 设置健康检查和自动重启
- 使用 Docker volumes 而非 bind mounts
- 配置备份策略(数据库文件)
- 使用 HTTPS(配合 Nginx/Caddy)
- 配置防火墙规则
🆘 获取帮助
如遇到问题:
- 查看日志:
docker-compose logs -f - 检查容器状态:
docker ps -a - 查看 GitHub Issues
- 联系:ws3101001@126.com
享受 Docker 带来的便捷部署体验! 🚀