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