为什么我要从码库构build回购url?

dockerbuild设可以接受一个GIT仓库的URL来find要build立的文件。

但是这让我困惑,因为这是我期望的工作stream程:

* Pull my repo with my code and dockerfile * Do development * run docker build using the PATH "context" of the repo on my local drive * poke/test my app after the container spins up * Write more code do more builds, etc 

如果我直接从回购站点build立,那么工作stream程是什么样子? 我会承诺,推动远程,然后build设? 或者这是一个pipe道的function,我的构build服务器是由docker从repo构build的,因为我认为我应该为这类事情传递“图像”。

这对于持续集成pipe道非常有用。 这些构buildpipe道的一个常见用法是首先git clone ,然后git checkout一些分支,然后转换成Docker构build上下文目录,然后运行构build。 这可能看起来像这样:

 #!/bin/sh git clone ssh://git.mycompany.example.com/myproject.git git checkout ${BRANCH} cd docker docker build -t "mycompany/myproject:${BRANCH}" . 

由于这是一个常见的用例,执行同样事情的速记方法会被拖入docker build ,如下所示:

 #!/bin/sh docker build -t "mycompany/myproject:${BRANCH}" \ "ssh://git.mycompany.example.com/myproject.git#${BRANCH}:docker" 

如果你关心克隆/结帐的细节,或者在结账之后做了其他事情,或者做了超出简单情况的任何事情,那么你会想用“长”的方法来编码每一个单独的步骤。 如果你只关心一个特定版本的Dockerfile被构build,你可以在一个shell命令中完成。

对于本地开发,您将继续使用docker build PATH来构build一个构build上下文,或者使用docker build - < Dockerfile没有上下文的docker build - < Dockerfile

使用URL表单的另一个原因是,如果您想要为不擅长处理的项目构build图像。 假设您使用mycompany/coolimage作为基础映像。 在Docker镜像库上发布的基础镜像的某些工具中存在一个错误。 mycompany/coolimage的作者已经修复了dev分支上的这个bug,但是这还没有发布到图像库。 你可以坐在你的手上,等待形象出版; 或者,您可以执行docker build -t mycompany/coolimage ssh://git.mycompany.example.com/myproject.git#dev并继续基于Dev分支中Dockerfile的工作。 你也可以克隆你自己的副本,但如果你没有做任何改变,为什么要麻烦?