代码之家  ›  专栏  ›  技术社区  ›  Daniel F

从映像到主机的Dockerfile复制

  •  0
  • Daniel F  · 技术社区  · 7 年前

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

    总而言之,生成的映像很适合在容器中使用,这样一来,Mosquitto服务器就可以在加载了该插件的情况下运行。

    2 回复  |  直到 7 年前
        1
  •  8
  •   gmc    7 年前

    我不知道您正在使用的特定编译器工具的详细信息,但我想我了解您要实现的目标:

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

    现在你跑吧 docker build 你有你的形象,我们称之为 mosq . 假设:

    • /home/me/my-source-code
    • 一旦编译,结果就在一个子文件夹中 dist 该文件夹的: /home/me/my-source-code/dist/result.so
    • 你的图像有一个脚本 /compile.sh 它编译中的源代码 /compilation

    然后,运行映像装载卷参数: /home/me/my源代码 /汇编

    假设前面所有的点 docker run 命令应该类似于:

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

    /home/me/我的源代码/dist/结果.so

    具体细节可能会因细节而异,但我希望您能得到这样的想法:准备好映像中的所有内容,以便执行单个sh脚本时,编译器从某个地方获取代码并运行。包含该代码的卷。如果编译器将结果输出到其他地方,请从主机装载另一个卷以获得结果。

        2
  •  0
  •   Ryan    7 年前

    复制可能不是你想要实现的目标的正确工具。

    要么像@gmc建议的那样使用运行时卷,要么使用 docker cp .

    使用

    docker cp CONTAINER:SRC_PATH DEST_PATH

    推荐文章