每次更换后重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泊坞窗图像,甚至重新启动泊坞窗容器。