话说用了基于 docker-gen 的几个镜像后才知道竟然有这样的操作。前一阵考虑更加友好的更新服务器的方式时,想到两种方案。
类 docker-gen 的方式自动更新所有容器的 git 仓库,这样在 Mac 上只要 push 到 github 服务器一会就自动更新了。
是跑一个 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
每五分钟(可以配置)就会主动更新所有容器的仓库了。
1
mritd 2017-07-07 10:22:59 +08:00 via iPhone
还是不懂这玩意有啥用
|
2
cloverstd 2017-07-07 10:28:55 +08:00
看不懂
|
3
waylybaye OP 有点慌 ……
就说静态博客和网站吧,你用部署了一个 httpd/nginx 上去,不是需要挂载一个 /var/www 的目录嘛,然后这个目录的内容一般都是 git 仓库里的内容吧。然后你现在 `docker run -d -e GIT_VOLUME=/var/www GIT_REMOTE=xxx httpd` 一下就 OK 了,git-agent 帮你自动更新 /var/www 目录 |
4
Librazy 2017-07-07 10:47:03 +08:00
话说可不可以考虑用 webhook 的方式呢?轮询的话有的时候需要实时查看效果的时候略有些不方便
不过感觉 webhook 的话工作量会大一些的样子(毕竟得开一个监听 |
6
heimeil 2017-07-07 10:56:33 +08:00
感觉实用性不大,热更新程序逻辑没什么必要,可能用来热更新配置文件还行。
|
8
oott123 2017-07-07 11:30:19 +08:00
难道不应该是,git push 触发 docker build,build 完触发容器集群热切换……
|