| # Docker 部署方式说明 |
| |
| ## 📋 两种部署方式 |
| |
| 本项目支持两种Docker部署方式,根据你的需求选择: |
| |
| ### 🔹 方式A: 完整系统部署(推荐生产环境) |
| |
| **特点**: |
| - ✅ 一键启动所有服务(Webhook服务器 + 4个Bot) |
| - ✅ 自动管理服务依赖 |
| - ✅ 统一配置管理 |
| - ✅ Bot间消息同步(Webhook) |
| - ✅ 共享网络 |
| |
| **使用场景**: |
| - 生产环境部署 |
| - 需要多bot协同工作 |
| - 需要bot间共享上下文 |
| |
| **配置文件**: `.env` (从 `.env.all.example` 复制) |
| **Compose文件**: `docker-compose.yml` (项目根目录) |
| |
| ```bash |
| # 1. 配置环境变量 |
| cp .env.all.example .env |
| nano .env # 填入所有配置 |
| |
| # 2. 启动所有服务 |
| docker-compose up -d |
| |
| # 3. 查看状态 |
| docker-compose ps |
| |
| # 4. 查看日志 |
| docker-compose logs -f tomato-bot |
| |
| # 5. 停止所有 |
| docker-compose down |
| ``` |
| |
| **服务列表**: |
| - `webhook-server` - 消息广播服务器 (端口: 30540) |
| - `tomato-bot` - 西红柿bot (端口: 30541) |
| - `cyrene-bot` - Cyrene bot (端口: 30542) |
| - `goldship-bot` - 黄金船bot (端口: 30543) |
| - `lunatalk-bot` - LunaTalk bot (端口: 30544) |
| |
| ### 🔹 方式B: 独立Bot部署(推荐开发环境) |
| |
| **特点**: |
| - ✅ 每个bot独立启动/停止 |
| - ✅ 灵活的开发测试 |
| - ✅ 独立的配置管理 |
| - ✅ 资源隔离 |
| - ⚠️ 无bot间消息同步 |
| |
| **使用场景**: |
| - 开发环境测试 |
| - 只需要运行部分bot |
| - Bot独立工作,无需协同 |
| |
| **配置文件**: 每个bot目录的 `.env` |
| **Compose文件**: 每个bot目录的 `docker-compose.yml` |
| |
| ```bash |
| # 1. 进入bot目录 |
| cd run/tomato |
| |
| # 2. 配置环境变量 |
| cp .env.example .env |
| nano .env # 填入bot配置 |
| |
| # 3. 启动bot |
| docker-compose up -d |
| |
| # 4. 查看日志 |
| docker-compose logs -f |
| |
| # 5. 停止bot |
| docker-compose down |
| ``` |
| |
| **管理脚本** (可选): |
| ```bash |
| # 使用便捷脚本管理(从项目根目录) |
| ./docker-bot.sh start tomato # 启动单个bot |
| ./docker-bot.sh stop tomato # 停止单个bot |
| ./docker-bot.sh logs tomato # 查看日志 |
| ./docker-bot.sh status # 查看所有bot状态 |
| ``` |
| |
| ## 🔄 方式对比 |
| |
| | 特性 | 方式A: 完整系统 | 方式B: 独立Bot | |
| |------|----------------|---------------| |
| | 启动方式 | `docker-compose up -d` | 每个bot单独启动 | |
| | 配置文件 | 1个统一的.env | 每个bot独立.env | |
| | Bot间通信 | ✅ 支持(Webhook) | ❌ 不支持 | |
| | 资源管理 | 统一管理 | 独立管理 | |
| | 适用场景 | 生产环境 | 开发测试 | |
| | 灵活性 | 中等 | 高 | |
| | 配置复杂度 | 低 | 中 | |
| |
| ## 🚀 快速决策指南 |
| |
| **选择方式A** 如果你需要: |
| - 在生产环境运行 |
| - Bot在同一个群组中协同工作 |
| - 统一管理所有bot |
| - Bot间共享上下文和消息 |
| |
| **选择方式B** 如果你: |
| - 在开发环境测试 |
| - 只需要运行1-2个bot |
| - Bot独立工作,各管各的 |
| - 需要灵活调试单个bot |
| |
| ## 📝 环境变量说明 |
| |
| ### 方式A所需环境变量 |
| |
| 参考 `.env.all.example`,包含: |
| - Webhook服务器配置 |
| - 所有4个bot的配置 |
| - 共享配置(如API代理) |
| |
| ### 方式B所需环境变量 |
| |
| 参考各bot目录的 `.env.example`,每个bot独立配置: |
| - ANTHROPIC_API_KEY |
| - TELEGRAM_BOT_TOKEN |
| - TELEGRAM_ALLOWED_USERS |
| - TELEGRAM_ALLOWED_GROUPS |
| |
| ## 🔗 相关文档 |
| |
| - [完整部署指南](docs/DOCKER_DEPLOYMENT.md) |
| - [Webhook系统说明](docs/WEBHOOK_SYSTEM.md) |
| - [故障排除](docs/DOCKER_DEPLOYMENT.md#故障排除) |
| |
| ## ❓ 常见问题 |
| |
| **Q: 可以混合使用两种方式吗?** |
| A: 不建议。选择一种方式并坚持使用,避免网络和配置冲突。 |
| |
| **Q: 方式B可以添加Webhook支持吗?** |
| A: 可以,需要手动配置webhook服务器和网络。建议直接使用方式A。 |
| |
| **Q: 如何从方式B迁移到方式A?** |
| A: |
| 1. 停止所有独立bot: `docker-compose down` (在各bot目录) |
| 2. 合并配置到 `.env` |
| 3. 使用根目录的 `docker-compose up -d` 启动 |
| |
| **Q: 数据会丢失吗?** |
| A: Docker Volumes独立存储,迁移时数据不会丢失。 |
| |
| --- |
| |
| **建议**: 生产环境使用方式A,开发环境使用方式B |