Docker 开发流程
Docker development workflow
运行 在 Docker 容器中的代码的正确开发工作流程是什么?
Solomon Hykes said "official" 工作流程涉及为每个 Git 提交构建和 运行 一个新的 Docker 图像。这是有道理的,但是如果我想在将更改提交到 Git 存储库之前测试更改怎么办?
我可以想到两种方法:
运行 本地开发服务器(例如 Django 开发服务器)上的代码。编辑一个文件;在开发服务器上测试;进行 Git 提交;使用新代码重建 Docker 图像;在本地 Docker 容器上再次测试。
不要 运行 本地开发服务器。相反,每次我编辑文件时构建和 运行 一个新的 Docker 图像,然后在本地 Docker 容器上测试更改。
这两种方法都非常低效。有没有更好的方法?
一种更有效的方法是 运行 从构建的最新图像(然后具有最新代码)中的新容器。
您可以从 bash shell 开始启动该容器,这样您就可以从容器内部编辑文件:
docker run -it <some image> bash -l
然后您将 运行 该容器中的应用程序来测试新代码。
更改该容器中文件的另一种方法是使用卷启动它。这个想法是改变 docker 主机上目录中的文件,而不是从容器本身的命令行中弄乱文件:
docker run -it -v /home/joe/tmp:/data <some image>
您将放入 docker 主机 /home/joe/tmp
中的任何文件都将在容器中的 /data/
下可用。将 /data
更改为适合您的情况的任何路径并进行修改。
运行 在 Docker 容器中的代码的正确开发工作流程是什么?
Solomon Hykes said "official" 工作流程涉及为每个 Git 提交构建和 运行 一个新的 Docker 图像。这是有道理的,但是如果我想在将更改提交到 Git 存储库之前测试更改怎么办?
我可以想到两种方法:
运行 本地开发服务器(例如 Django 开发服务器)上的代码。编辑一个文件;在开发服务器上测试;进行 Git 提交;使用新代码重建 Docker 图像;在本地 Docker 容器上再次测试。
不要 运行 本地开发服务器。相反,每次我编辑文件时构建和 运行 一个新的 Docker 图像,然后在本地 Docker 容器上测试更改。
这两种方法都非常低效。有没有更好的方法?
一种更有效的方法是 运行 从构建的最新图像(然后具有最新代码)中的新容器。
您可以从 bash shell 开始启动该容器,这样您就可以从容器内部编辑文件:
docker run -it <some image> bash -l
然后您将 运行 该容器中的应用程序来测试新代码。
更改该容器中文件的另一种方法是使用卷启动它。这个想法是改变 docker 主机上目录中的文件,而不是从容器本身的命令行中弄乱文件:
docker run -it -v /home/joe/tmp:/data <some image>
您将放入 docker 主机 /home/joe/tmp
中的任何文件都将在容器中的 /data/
下可用。将 /data
更改为适合您的情况的任何路径并进行修改。