2017-10-08 39 views
0

docker build可以接受git仓库的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 

如果林建设直接从回购,这是什么工作流程是什么样子?我会承诺,推动远程,然后建设?或者这是一个管道的功能,我的构建服务器通过回购构建Docker,因为我认为我应该为这类事情传递“图像”。

回答

2

它对于持续集成管道非常有用。这些构建管道的常见用例是首先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" 

如果你关心的关于克隆/结帐如何发生的细节,或者在结账之后做了其他事情,或者做了超出简单情况的任何事情,那么你会想要用“长”的方法来编码每个单独的步骤。如果您只关心构建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继续工作。你也可以克隆自己的副本,但如果你没有做任何改变,为什么要麻烦?

+0

嗯我想我仍然困惑。在这个例子中,你已经给出了你已经检查过的repo(里面有dockerfile)。所以你已经检出了分支,并且dockerfile已经存在于磁盘上,为什么你需要将docker构建回repo的URL?对不起,我必须在这里丢失一些基本的东西 – red888

+0

@ red888看看答案中的第二个例子和[docker build](https://docs.docker.com/engine/reference/commandline/build/#extended-description)文件 – lifeisfoo

相关问题