Files
aiagents-stock/docs/DOCKER_DEPLOYMENT.md

7.3 KiB
Raw Permalink Blame History

🐳 Docker 部署指南

本文档详细说明如何使用 Docker 部署 AI 股票分析系统。

📋 前置要求

  • Docker 20.10+
  • Docker Compose 2.0+(可选,但推荐)
  • 至少 2GB 可用磁盘空间
  • DeepSeek API Key

安装 Docker

Windows

  1. 下载并安装 Docker Desktop for Windows
  2. 启动 Docker Desktop
  3. 确认安装成功:
docker --version
docker-compose --version

macOS

  1. 下载并安装 Docker Desktop for Mac
  2. 启动 Docker Desktop
  3. 确认安装成功:
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(推荐)

  1. 克隆或下载项目
cd /path/to/agentsstock1
  1. 配置环境变量
# Windows (PowerShell)
Copy-Item .env.example .env

# Linux/macOS
cp .env.example .env
  1. 编辑 .env 文件,填入您的配置
DEEPSEEK_API_KEY=sk-your-actual-api-key-here
EMAIL_ENABLED=false
# ... 其他配置
  1. 启动服务
docker-compose up -d
  1. 访问应用 打开浏览器访问:http://localhost:8503

  2. 查看日志

docker-compose logs -f
  1. 停止服务
docker-compose down

方法二:使用 Docker 命令

  1. 构建镜像
docker build -t agentsstock1:latest .
  1. 创建数据目录
mkdir -p data
  1. 运行容器
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
  1. 查看日志
docker logs -f agentsstock1
  1. 停止容器
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

🔒 安全建议

  1. 保护 .env 文件

    • 不要提交到 Git
    • 设置适当的文件权限:chmod 600 .env
  2. 使用 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
  1. 定期更新镜像
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;
    }
}

📊 性能优化

  1. 使用构建缓存
docker-compose build --no-cache  # 清除缓存重建
  1. 多阶段构建(高级) 可以修改 Dockerfile 使用多阶段构建减小镜像体积。

  2. 资源限制

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 带来的便捷部署体验! 🚀