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

485次阅读
3条评论

共计 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,接下来就看自己发挥了吧!

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

AD:【腾讯云服务器大降价】2核4G 222元/3年 1核2G 38元/年
正文完
 
阿蛮君
版权声明:本站原创文章,由 阿蛮君 2024-04-08发表,共计1557字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(3条评论)
john 评论达人 LV.1
2024-04-11 18:26:24 回复

万物皆可脚本,厉害哟

 Windows  Chrome  中国湖南省郴州市电信
john 评论达人 LV.1
2024-04-11 18:27:54 回复

提交一个bug,评论区的用户名不能设置为中文 :mrgreen:

 Windows  Chrome  中国湖南省郴州市电信
    阿蛮君 博主
    2024-04-11 20:29:59 回复

    @john 我故意的 :oops:

     Windows  Edge  中国广东省揭阳市电信
Copyright © 2022-2024 阿蛮君博客 湘ICP备2023001393号
本网站由 亿信互联 提供云计算服务 | 蓝易云CDN 提供安全防护和加速服务
Powered by Wordpress  Theme by Puock