从映像到主机的Dockerfile COPY

丹尼尔·F

我有一个Dockerfile,首先在其中编译Mosquitto服务器的一层,然后使用COPY将身份验证插件的源文件复制到映像中,最后运行该插件的编译。

总而言之,生成的图像很适合在容器中使用,然后容器中装有该插件运行的Mosquitto服务器。

我想修改此插件并通过重新运行Dockerfile的构建来重新编译它。由于第一层未修改,因此它仅复制修改后的文件并再次运行编译。

我现在要做的是从新映像中提取插件(.so文件),并将其移动到主机上的挂载目录,这样,当前正在运行的Mosquitto服务器将只需要重新启动即可。

可以反向使用COPY命令,以便将编译后的插件复制到指定的主机目录中,以便随后我可以删除新创建的映像吗?

还是这完全是一种不好的做法?我是否应该更好地执行到正在运行的容器中,并让它重新构建插件(这将使我只能在运行服务器的计算机上构建插件)?

gmc

我不知道您正在使用的特定编译器工具的详细信息,但是我想我知道您正在尝试实现什么:

我不会在Dockerfile中包含COPY命令。Dockerfile必须仅包含必要的指令,以使映像具有执行编译过程所需的工具和依赖项,并且可能包含具有特定编译顺序的shell脚本。

现在,您可以运行docker build并拥有自己的图像,我们称它为mosq假设:

  • 您的本地计算机中有您的源代码 /home/me/my-source-code
  • 编译后,将结果保存在该文件夹的子dist文件夹中:/home/me/my-source-code/dist/result.so
  • 您的图像具有一个脚本/compile.sh该脚本可以编译其中存在的源代码/compilation(该文件夹在图像中应该为空)

然后,你运行像安装体积PARAM:/home/me/my-source-code/compilation容器内

假设所有上述几点,该docker run命令应类似于以下内容:

docker run -d --name my-compiler -v /home/me/my-source-code:/source mosq /compile.sh

等等,容器将以静默方式运行并死亡,然后,您将在其中进行编译 /home/me/my-source-code/dist/result.so

具体细节可能会有所不同,具体取决于细节,但是我希望您能明白:准备映像中的所有内容,以便执行单个sh脚本,编译器从某个地方获取代码并运行。使用该文件夹中的代码挂载卷。如果编译器将结果输出到其他地方,请从您的主机上装入另一个卷以在那获得结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Docker COPY主机$ {HOME} /。cache到容器

从主机到容器的Dockerfile COPY工作正常,但是当docker-compose.yml使用卷时,容器中的文件对主机不可见

Dockerfile将主机用户UID和GID复制到映像

Dockerfile COPY“ .env”目录

Dockerfile COPY {来源:-...}

Dockerfile COPY指令失败?

无法将COPY从远程主机复制到Redshift

ssh-copy-id到不同的远程主机

Dockerfile COPY在映像中创建不需要的子目录

Dockerfile中的条件COPY / ADD?

Dockerfile上的错误指令COPY

先前版本的dockerfile COPY失败

Dockerfile COPY:“ lchown ...不是目录”

如何在不使用ADD或COPY指令的情况下将文件添加到Dockerfile中的映像

升级到3.1后,Dockerfile COPY $ {source:-obj / Docker / publish}找不到正确的源

将文件从主机复制到容器时出现 Docker COPY 错误

Docker(Dockerfile):从主机到容器共享目录

DockerFile:ADD和COPY之间的区别

在dockerfile上使用COPY进行Apache构建

在路径中带有@的Dockerfile COPY

dockerfile COPY 不会复制所有文件

Dockerfile的COPY命令无法正常工作

Dockerfile 在 COPY 中构建 ARG --from=

Dockerfile上的“ COPY。/ your / directory”是否自行复制Dockerfile?

Golang Docker SDK映像构建因COPY而失败

Docker:是否从 DockerHub 拉取映像将 Dockerfile 下载到本地主机?

是否可以将主机路径或 docker 卷挂载到来自 dockerfile 的映像中的路径?

如何将文件从dockerfile复制到主机?

使用 Dockerfile 将文件从 Docker 容器复制到主机