Docker 搭建 webhook - 调用接口即可运行本地脚本


共计 1557 个字符,预计需要花费 4 分钟才能阅读完成。

为什么突然想到用这个,因为有时候需要快速批量修改域名的 cname 解析,但是登录云平台去一个个修改非常麻烦。但如果将常见的操作写成脚本,并使用网络请求进行调用,这个就变得非常容易了。

简而言之,就是将复杂的操作做成脚本,然后通过接口调用运行脚本。(为什么不直接登录机器,因为有时候不方面,而浏览器是哪里都有的)当然,能做的还有很多,全看自己的需求。

简介

这里直接引用开源项目 Webhook 自己的介绍。

WebHook 是一个用 Go 语言编写的轻量可配置的实用工具,它允许你轻松、快速的创建 HTTP 服务(钩子)。你可以使用它来执行配置好的命令。并且还能够将 HTTP 请求中的数据(如请求头内容、请求体以及请求参数)灵活的传递给你配置好的命令、程序。当然,它也允许根据具体的条件规则来便触发钩子。

举个例子,如果你使用的是 GitHub 或 Gitea,可以使用 WebHook 设置一个钩子,在每次你推送更改到项目的某个分支时,这个钩子会在你运行服务的设备上运行一个“更新程序部署内容”的脚本。

如果你使用飞书、钉钉、企业微信或者 Slack,你也可以设置一个“传出 Webhook 集成”或“斜杠命令”,来在你的服务器上运行各种命令。我们可以通过聊天工具的“传入 Webhook 集成”功能处理接口的响应内容,直接向你或你的 IM 会话或频道报告执行结果。

Webhook 的目标只是它应该做的,那就是:

  • 收到请求,
  • 解析标头、有效负载和查询变量,
  • 检查是否满足钩子的指定规则,
  • 最后,通过以下方式将指定的参数传递给指定的命令 命令行参数或通过环境变量。

其他一切都是命令作者的责任。

配置文件中文解释:https://github.com/soulteary/webhook/tree/main/docs/zh-CN

使用

这里的配置文件可以使用 yaml 或者 json 格式。

首先创建配置文件:

mkdir -p /home/docker/webhook/config && \
cat > /home/docker/webhook/config/hooks.yaml << EOF
- id: test
  execute-command: "/hooks/test.sh"
  command-working-directory: "/hooks/"
  # 是否应该等待脚本程序执行完毕,并将原始程序输出返回给调用方。
  include-command-output-in-response: true
EOF

这里配置了一个名为 test 的钩子,运行目录为 /hooks/,执行的命令为 /hooks/test.sh。(这里的路径为容器内路径)

所以接下来要创建 test.sh

mkdir -p /home/docker/webhook/hooks && \
touch /home/docker/webhook/hooks/test.sh && \
chmod +x /home/docker/webhook/hooks/test.sh && \
cat > /home/docker/webhook/hooks/test.sh << EOF
#!/bin/bash

sleep 3
echo "test ok"
EOF

然后就可以运行容器了:

docker run -d \
--name=webhook \
-p 9000:9000 \
-v /home/docker/webhook/config:/etc/webhook \
-v /home/docker/webhook/hooks:/hooks \
hausen1012/webhook -verbose -hooks=/etc/webhook/hooks.yaml -hotreload

访问 ip:9000/hooks/test,输出 test ok 就搭建成功了。另外,容器安装了常用的工具,如 ping、curl、sshpass 和 python3,接下来就看自己发挥了吧!

提醒:本文发布于132天前,文中所关联的信息可能已发生改变,请知悉!

Tips:清朝云网络工作室

阅读剩余
THE END