以下是一个使用 golang 编写的脚本,用于守护 RabbitMQ Docker 容器:
package main
import (
"fmt"
"log"
"os/exec"
)
func main() {
// 检查 RabbitMQ 容器是否正在运行
isRunningCmd := exec.Command("docker", "ps", "--filter", "name=rabbitmq", "--format", "{{.Names}}")
output, err := isRunningCmd.Output()
if err != nil {
log.Fatalf("Error checking RabbitMQ container status: %s", err)
}
if string(output) == "" {
// 如果容器未运行,则启动它
startCmd := exec.Command("docker", "start", "rabbitmq")
if err := startCmd.Run(); err != nil {
log.Fatalf("Error starting RabbitMQ container: %s", err)
}
fmt.Println("RabbitMQ container started.")
} else {
fmt.Println("RabbitMQ container is already running.")
}
}
该脚本首先检查名为“rabbitmq”的容器是否正在运行。如果容器未运行,则使用 docker start
命令启动它;否则,将输出一条消息表明容器已经在运行。
您可以将此脚本放在一个定时任务中,以确保 RabbitMQ 容器始终处于运行状态。注意,在执行此脚本之前,请确保已经安装了 Docker 并且具有足够的权限来管理 Docker 容器。