2025-03-27 16:27:41 +08:00

87 lines
1.9 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容器管理相关的代码
## 文件说明
- `client.go`: Docker客户端初始化和管理
- `container.go`: 容器基本操作(创建、启动、停止、删除等)
- `robot.go`: 微信机器人容器专用操作(如获取登录二维码、检查微信登录状态等)
- `monitor.go`: 容器状态监控,定期检查并更新机器人状态
## 主要功能
1. **容器生命周期管理**
- 创建微信机器人容器
- 启动、停止和删除容器
- 获取容器状态和日志
2. **微信机器人操作**
- 获取登录二维码
- 微信登录状态监控
- 获取联系人列表和群成员
- 获取聊天记录
- 微信登出
3. **状态监控**
- 定期检查微信机器人容器状态
- 自动更新数据库中的状态信息
## 使用方法
初始化Docker客户端
```go
import (
"context"
"github.com/Lxh/wechat-demo/internal/config"
"github.com/Lxh/wechat-demo/internal/docker"
)
func main() {
cfg, _ := config.Load()
err := docker.InitClient(&cfg.Docker)
if err != nil {
panic(err)
}
// 创建微信机器人容器
ctx := context.Background()
containerID, err := docker.CreateRobotContainer(ctx, &cfg.Docker, "robot1")
if err != nil {
panic(err)
}
// 获取容器状态
status, errMsg, err := docker.GetWechatBotStatus(ctx, containerID)
// ...
}
```
启动容器监控:
```go
import (
"context"
"time"
"github.com/Lxh/wechat-demo/internal/model"
"github.com/Lxh/wechat-demo/internal/docker"
)
func main() {
db := model.GetDB()
// 创建监控器,每分钟检查一次
monitor := docker.NewContainerMonitor(db, time.Minute)
// 启动监控
monitor.Start(context.Background())
// 添加容器到监控列表
monitor.AddRobot("container-id")
// 停止监控
// monitor.Stop()
}
```