构建docker映像时,我应该在哪里“ make”编译代码?跑? CMD?

时间:2018-11-16 17:48:21

标签: python docker dockerfile distutils

我正在为需要使用the documentation进行编译的某些代码构建docker映像。我有一个运行python setup.py build_ext --inplace的Makefile。

我应该做

RUN make 

CMD ["make"]

我找到了一个使用RUN的{​​{3}}。此外,此distutils.extension建议使用RUN gcc -o myapp main.c,表明RUN将可以编译我的代码,但是其他资源(blog post for maven compilegcc image)建议包括已编译的代码在图像中增加了它的大小,这使我认为我应该使用CMD,因为只有在容器运行后才能执行该操作。

1 个答案:

答案 0 :(得分:3)

在创建映像时,将执行一次RUN命令。每次启动容器时都会执行CMD。

使用CMD将使您的代码在每次启动容器时进行编译。您的映像是打算运行应用程序还是仅创建应用程序,然后将其移动到其他位置?对于前者,您肯定会在构建映像时使用RUN对其进行编译。

自引入multi stage builds以来,不再需要增加图像大小,因为您可以在一个图像中编译应用程序,然后仅将生成的可执行文件传输到最终图像。

除非有特殊原因,否则使用CMD短语进行编译是没有意义的。