Docker开发工作stream程

在Docker容器中运行的代码的正确开发stream程是什么?

所罗门·海克斯(Solomon Hykes)表示 ,“官方”工作stream程涉及为每个Git提交构build并运行一个新的Docker镜像。 这是有道理的,但如果我想在将它提交到Git repo之前testing一个变更呢?

我可以想到两种方法来做到这一点:

  1. 在本地开发服务器上运行代码(例如,Django开发服务器)。 编辑一个文件; 在dev服务器上testing; 做一个Git提交; 用新代码重buildDocker镜像; 在本地Docker容器上再次testing。

  2. 不要运行本地开发服务器。 相反,每次编辑文件时都要构build并运行一个新的Docker镜像,然后在本地Docker容器上testing更改。

这两种方法都非常低效。 有没有更好的办法?

更有效的方法是从最新的图像中运行一个新的容器(然后使用最新的代码)。

您可以启动该容器启动一个bash shell,以便您可以编辑容器内的文件:

docker run -it <some image> bash -l 

然后,您将运行该容器中的应用程序来testing新的代码。

另一种在该容器中更改文件的方法是使用卷启动它。 这个想法是改变docker主机上的目录中的文件,而不是从容器本身的命令行中搞乱文件:

 docker run -it -v /home/joe/tmp:/data <some image> 

您将在docker主机上放置在/home/joe/tmp任何文件将在容器中的/data/下提供。 改变/data到任何适合您的情况的path,并破解。