我正在为需要使用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 compile,gcc image)建议包括已编译的代码在图像中增加了它的大小,这使我认为我应该使用CMD
,因为只有在容器运行后才能执行该操作。
答案 0 :(得分:3)
在创建映像时,将执行一次RUN命令。每次启动容器时都会执行CMD。
使用CMD将使您的代码在每次启动容器时进行编译。您的映像是打算运行应用程序还是仅创建应用程序,然后将其移动到其他位置?对于前者,您肯定会在构建映像时使用RUN对其进行编译。
自引入multi stage builds以来,不再需要增加图像大小,因为您可以在一个图像中编译应用程序,然后仅将生成的可执行文件传输到最终图像。
除非有特殊原因,否则使用CMD短语进行编译是没有意义的。