Docker开发工作stream程
在Docker容器中运行的代码的正确开发stream程是什么?
所罗门·海克斯(Solomon Hykes)表示 ,“官方”工作stream程涉及为每个Git提交构build并运行一个新的Docker镜像。 这是有道理的,但如果我想在将它提交到Git repo之前testing一个变更呢?
我可以想到两种方法来做到这一点:
-
在本地开发服务器上运行代码(例如,Django开发服务器)。 编辑一个文件; 在dev服务器上testing; 做一个Git提交; 用新代码重buildDocker镜像; 在本地Docker容器上再次testing。
-
不要运行本地开发服务器。 相反,每次编辑文件时都要构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,并破解。