kouleen/docker-hook 是一款基于Golang开发的Docker自动化部署WebHook服务,用于对接GitHub Actions等CI流水线,镜像推送完成后通过WebHook回调,自动完成镜像拉取、旧容器销毁、新容器启动上线,实现代码提交一键部署。内置Docker全量操作接口、SQLite部署日志持久化,支持容器端口映射、目录挂载、环境变量注入、重启策略自定义等部署参数。
/var/run/docker.sock,用于操作宿主机Docker服务docker run -d \
--name docker-hook \
-p 8077:8077 \
-e USERNAME=你的DockerHub账号 \
-e PASSWORD=你的DockerHub密钥/AccessToken \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ./hook.db:/app/hook.db \
kouleen/docker-hook:latest
services:
docker-hook:
image: kouleen/docker-hook:latest
container_name: docker-hook
restart: always
ports:
- "8077:8077"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./hook.db:/app/hook.db
environment:
- USERNAME=你的DockerHub账号
- PASSWORD=你的DockerHub访问令牌
启动命令:
docker-compose up -d
| 环境变量 | 作用 |
|---|---|
| USERNAME | DockerHub登录账号,私有镜像拉取鉴权使用 |
| PASSWORD | DockerHub密码或个人AccessToken |
| 宿主机路径 | 容器内路径 | 用途 |
|---|---|---|
| /var/run/docker.sock | /var/run/docker.sock | 核心挂载,容器调用宿主机Docker API |
| ./hook.db | /app/hook.db | SQLite部署日志持久化,防止容器销毁丢失记录 |
服务默认监听端口:8077,可通过宿主机端口映射修改对外访问端口。
POST /api/docker/webhook/put
{
"runId": "123456789",
"imageName": "kouleen/docker-hook:latest",
"containerName": "docker-hook",
"branch": "release",
"repo": "kouleen/docker-hook",
"htmlUrl": "https://github.com/kouleen/docker-hook",
"cloneUrl": "https://github.com/kouleen/docker-hook.git",
"sshUrl": "[email protected]:kouleen/docker-hook.git",
"status": "success",
"actor": "kouleen",
"commitMessage": "feat: update service",
"workflow": "GitHub Docker Image CI",
"triggerType": "push",
"failRemark": "流水线未发现异常",
"networkMode": "bridge",
"restartPolicy": "always",
"removeOldExist": true,
"enableIT": true,
"portMapping": {
"8077": "8077"
},
"envList": [
"USERNAME=kouleen",
"PASSWORD=*************"
],
"volumeBinds": [
"/usr/bin/docker:/usr/bin/docker:ro",
"/var/run/docker.sock:/var/run/docker.sock"
],
"cmdOverride": ["pwd","ls"]
}
接口成功返回:{"code":0,"data":true}
GET /api/docker/webhook/queryGET /api/docker/image/listGET /api/docker/container/listGET /api/docker/container/log?containerName=xxx在CI流水线构建推送镜像成功后,增加WebHook请求步骤,将构建信息、镜像名称、容器配置POST至本服务接口,流水线完成自动触发服务器更新容器上线。
/var/run/docker.sockUSERNAME、PASSWORD凭证有效性,AccessToken开启仓库读写权限GitHub:https://github.com/kouleen/docker-hook
MIT License
Content type
Image
Digest
sha256:d5d05130f…
Size
23.5 MB
Last updated
15 days ago
docker pull kouleen/docker-hook