为什么我想从repo URL建立docker?

时间:2017-10-08 22:35:57

标签: git docker containers dockerfile

docker build可以接受git repo的URL来查找要构建的文件。

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

* 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

如果我直接从回购中构建,该工作流程是什么样的?我会承诺,推动远程,然后建设?或者这是一个管道的功能,我的构建服务器从repo构建docker构建因为我认为我应该传递"图像"对于那种事情。

1 个答案:

答案 0 :(得分:3)

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

#!/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"

如果您关心克隆/结账的详细信息,或在结账后做任何其他事情,或者做一些超出简单案例的事情,那么您会想要使用" long"编码每个单独步骤的方法。如果您只关心构建特定版本的Dockerfile,可以在单个shell命令中完成。

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

使用URL表单的另一个原因是,如果要为未正在处理的项目构建映像。假设您使用mycompany/coolimage作为基本图像。在Docker映像存储库上发布的基础映像的某个工具中存在一个错误。 mycompany/coolimage的作者已在dev分支上修复了此错误,但尚未将其发布到映像存储库。你可以坐在你的手上等待图像发布;或者,您可以执行docker build -t mycompany/coolimage ssh://git.mycompany.example.com/myproject.git#dev并根据dev分支中的Dockerfile继续工作。您也可以克隆自己的副本,但如果您没有进行任何更改,为什么还要打扰?