V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
waylybaye
V2EX  ›  Docker

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

  •  
  •   waylybaye · 2017-07-07 09:49:50 +08:00 · 4117 次点击
    这是一个创建于 2695 天前的主题,其中的信息可能已经有所发展或是发生改变。

    话说用了基于 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
    

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

    9 条回复    2017-07-07 15:45:21 +08:00
    mritd
        1
    mritd  
       2017-07-07 10:22:59 +08:00 via iPhone
    还是不懂这玩意有啥用
    cloverstd
        2
    cloverstd  
       2017-07-07 10:28:55 +08:00
    看不懂
    waylybaye
        3
    waylybaye  
    OP
       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
        4
    Librazy  
       2017-07-07 10:47:03 +08:00
    话说可不可以考虑用 webhook 的方式呢?轮询的话有的时候需要实时查看效果的时候略有些不方便
    不过感觉 webhook 的话工作量会大一些的样子(毕竟得开一个监听
    waylybaye
        5
    waylybaye  
    OP
       2017-07-07 10:50:19 +08:00
    @Librazy 有考虑,慢慢完善~ 我只要开一个 simple http server 就好了 😂
    heimeil
        6
    heimeil  
       2017-07-07 10:56:33 +08:00
    感觉实用性不大,热更新程序逻辑没什么必要,可能用来热更新配置文件还行。
    waylybaye
        7
    waylybaye  
    OP
       2017-07-07 11:02:17 +08:00
    @heimeil 生产环境当然不建议这么搞,但是那么多用 Docker 跑博客、个站的就很有用啊。
    oott123
        8
    oott123  
       2017-07-07 11:30:19 +08:00
    难道不应该是,git push 触发 docker build,build 完触发容器集群热切换……
    waylybaye
        9
    waylybaye  
    OP
       2017-07-07 15:45:21 +08:00
    @oott123 每更新一行 md 文件 build 一个 docker 镜像 🌚
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5560 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 03:03 · PVG 11:03 · LAX 19:03 · JFK 22:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.