【发布时间】:2019-06-27 03:11:00
【问题描述】:
我有一个 Dockerfile,我首先在其中一层编译 Mosquitto 服务器,然后使用 COPY 将身份验证插件的源文件复制到映像中,最后运行该插件的编译。
总而言之,生成的图像非常适合在容器中使用,然后在加载该插件的情况下运行 Mosquitto 服务器。
我想修改这个插件并通过重新运行 Dockerfile 的构建来重新编译它。由于第一层是未修改的,所以它只是复制修改后的文件并再次运行编译。
我现在要做的是从该新映像中提取插件(.so 文件)并将其移动到主机上的挂载目录,这样当前正在运行的 Mosquitto 服务器只需要重新启动即可。
是否可以反向使用 COPY 命令,将编译好的插件复制到指定的主机目录,然后我可以删除新创建的镜像?
或者这完全是一个糟糕的方法?我是否应该更好地执行到正在运行的容器中并让它重建插件(这将限制我在运行服务器的机器上构建插件)?
【问题讨论】:
-
为什么不使用卷?
-
@gmc 您能否详细说明您指的是哪种卷以及在哪里使用它?服务器在开发机器上运行,因此除了从主机挂载外,没有理由使用任何其他卷,这简化了插件使用的脚本的开发过程。这台开发机器是一台服务器(不是工作站),Mosquitto 服务器应该运行数小时/数天,除非需要重新加载插件(重启 Mosquitto 大约需要一秒钟的停机时间)
标签: docker copy docker-build