87 lines
1.9 KiB
Markdown
87 lines
1.9 KiB
Markdown
# 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()
|
||
}
|
||
```
|