每次更换后重build容器?

如果您有以下情况, Docker文档build议使用ONBUILD指令:

例如,如果您的映像是可重用的Python应用程序构build器,则需要将应用程序源代码添加到特定的目录中,并且可能需要在此之后调用构build脚本。 你现在不能只调用ADD和RUN,因为你还没有访问应用程序的源代码,每个应用程序的版本都不一样。 您可以简单地向应用程序开发人员提供一个样板化的Dockerfile来复制粘贴到他们的应用程序中,但是效率低,容易出错并且难以更新,因为它与特定于应用程序的代码混合在一起。

基本上,这一切听起来不错,但是这意味着我必须重新创build应用程序容器,每次我改变一些东西,即使它只是一个错字。

这似乎并不是非常有效的,例如,在创buildWeb应用程序时,用于更改内容,保存并在浏览器中进行刷新。

你怎么处理这个?

这意味着每次我改变一些东西时,我都必须重新创build应用程序容器,即使它只是一个错字

不一定,您可以使用docker run命令的-v选项项目文件注入到容器中。 所以你不需要重build一个docker镜像。

请注意, ONBUILD指令是用于Dockerfile FROM父Dockerfileinheritance的情况。 当Docker构build一个Dockerfile子图的时候,父Dockerfile中的ONBUILD指令会被运行。


这似乎并不是非常有效的,例如,在创buildWeb应用程序时,用于更改内容,保存并在浏览器中进行刷新。

如果您在迭代应用程序代码时使用Docker容器来为Web应用程序提供服务,那么我build议您制作一个特殊的Docker镜像,其中只包含运行您的应用程序的所有内容,但包含应用程序代码。

然后在Docker容器中,将包含应用程序代码的目录与应用程序文件所在的目录共享。

例如,如果我正在开发一个静态网站,并且我的工作空间位于/home/thomas/workspace/project1/ ,那么我将启动一个运行nginx的容器:

 docker run -d -p 80:80 -v /home/thomas/workspace/project1/:/usr/local/nginx/html:ro nginx 

这样,我可以更改/home/thomas/workspace/project1/ ,并且更改将被反映出来,而无需重新构build泊坞窗图像,甚至重新启动泊坞窗容器。