git-agent 帮你自动更新所有 Docker 容器里的 git 仓库

2017-07-07 09:49:50 +08:00
 waylybaye

话说用了基于 docker-gen 的几个镜像后才知道竟然有这样的操作。前一阵考虑更加友好的更新服务器的方式时,想到两种方案。

  1. 类 docker-gen 的方式自动更新所有容器的 git 仓库,这样在 Mac 上只要 push 到 github 服务器一会就自动更新了。

  2. 是跑一个 Dropbox 的客户端 Docker,其它容器的 Volume 都挂到 Dropbox 的一个子目录上。

然后我发现 Docker 的 API 竟然如此简单,于是撸了一个 Docker 镜像: git-agent

https://github.com/waylybaye/git-agent

使用方法

使用非常简单,只要在服务器上启动一下 git-agent

docker run -d -v /:/rootfs -v /var/run/docker.sock:/var/run/docker.sock:ro hyperapp/git-agent

然后所有需要更新 git 仓库的容器添加两个变量就行了

docker run -d -e GIT_VOLUME='/srv' -e GIT_REMOTE='https://github.com/xxx.git' -v /srv myImage

每五分钟(可以配置)就会主动更新所有容器的仓库了。

4032 次点击
所在节点    Docker
9 条回复
mritd
2017-07-07 10:22:59 +08:00
还是不懂这玩意有啥用
cloverstd
2017-07-07 10:28:55 +08:00
看不懂
waylybaye
2017-07-07 10:34:35 +08:00
有点慌 ……

就说静态博客和网站吧,你用部署了一个 httpd/nginx 上去,不是需要挂载一个 /var/www 的目录嘛,然后这个目录的内容一般都是 git 仓库里的内容吧。然后你现在 `docker run -d -e GIT_VOLUME=/var/www GIT_REMOTE=xxx httpd` 一下就 OK 了,git-agent 帮你自动更新 /var/www 目录
Librazy
2017-07-07 10:47:03 +08:00
话说可不可以考虑用 webhook 的方式呢?轮询的话有的时候需要实时查看效果的时候略有些不方便
不过感觉 webhook 的话工作量会大一些的样子(毕竟得开一个监听
waylybaye
2017-07-07 10:50:19 +08:00
@Librazy 有考虑,慢慢完善~ 我只要开一个 simple http server 就好了 😂
heimeil
2017-07-07 10:56:33 +08:00
感觉实用性不大,热更新程序逻辑没什么必要,可能用来热更新配置文件还行。
waylybaye
2017-07-07 11:02:17 +08:00
@heimeil 生产环境当然不建议这么搞,但是那么多用 Docker 跑博客、个站的就很有用啊。
oott123
2017-07-07 11:30:19 +08:00
难道不应该是,git push 触发 docker build,build 完触发容器集群热切换……
waylybaye
2017-07-07 15:45:21 +08:00
@oott123 每更新一行 md 文件 build 一个 docker 镜像 🌚

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/373646

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX