2016-01-10 33 views
5

我使用Travis CI从Dockerfiles构建Docker镜像,然后在成功时将它们推送到Docker Hub。如何自动更新Docker Hub的完整描述?

我创建了一个MD文件来描述图像以及如何使用它。我想在完整说明部分的Docker Hub上有相同的描述。

因为我可能会在将来更新描述,所以我想让Travis CI根据存储库中的MD文件使用新映像自动更新描述。

任何人都知道如何做到这一点?

回答

8

由于Docker Hub does not expose any API,将内容远程发送到Docker Hub的唯一方法是使用docker push命令,这限制了用于发送图像。另一方面,如果您让Docker Hub服务从Github或Bitbucket存储库为您创建映像,那么Doc​​ker Hub将通过在该存储库上找到README.md文件的内容来更新详细描述。请参阅Docker Hub的自动构建文档中的Understand the build process部分。

这意味着你托管DockerfileREADME.md在Github或到位桶文件。


如果你真的需要首先建立自己的TravisCI(也许是因为你还运行内置图像自动测试)的图像,那么你可以有TravisCI触发泊坞枢纽网络挂接告诉泊坞枢纽建一旦TravisCI确定它正在通过测试,图像。

要做到这一点,在泊坞枢纽,配置你的形象,你会为自动构建(因此一个Github上或到位桶项目联系起来),但取消了自动功能:

Docker Hub project build settings

然后向下滚动构建设置页面到构建触发器部分并复制触发器URL:

Docker Hub project build trigger

现在编辑您的.travis。阳明文件,并添加以下块(介意<your account><your image>占位符):

after_success: 
# notify Docker Hub to make a new build 
- > 
    [ "$TRAVIS_BRANCH" == "master" ] 
    && curl -X POST -H "Content-Type: application/json" 
    --data '{"docker_tag_name": "latest"}' 
    https://registry.hub.docker.com/u/<your account>/<your image>/trigger/$DOCKER_HUB_TOKEN/ 

然后转到您的项目页面的特拉维斯CI网站上,并打开项目设置:

Travis CI project settings

然后将DOCKER_HUB_TOKEN环境变量添加到您的Travis CI项目中,并在Docker Hub Build Settings页面上找到触发器标记值:

Travis CI project environment variables

您仍然需要关联到你的码头工人枢纽工程一Github上或到位桶库,但特拉维斯CI会指示多克尔集线器时,建立你的形象之一。

+0

是的,我知道Automated Builds,但我想用Travis CI,这样我也可以做一堆测试。有没有其他方法,或者我应该只是编写一个充当浏览器的脚本并更改Docker Hub页面上的描述? – NEO

+0

@NEO可以这样做,设置更复杂,但我会尽力解释清楚→回答编辑 – Thomasleveil

+0

这实际上是一个好主意。但是如果我想触发多个构建,我应该怎么做?现在,我正在使用Travis CI的构建矩阵功能通过更改一些env变量来构建多个图像。是否可以触发矩阵每行的构建? – NEO

相关问题