我对docker不熟悉,我正在尝试为python3构建一个多阶段dockerfile
FROM ubuntu:18.04 as base
RUN apt-get -qy update && apt-get install python3 -y
WORKDIR /pydocktest
COPY test.py .
FROM ubuntu:18.04 AS release
WORKDIR /pytest
COPY --from=base /usr/local/bin/ /usr/local/bin/
COPY --from=base /pydocktest .
CMD ["./test.py"]
然后
docker build -t test .
docker run test
输出
standard_init_linux.go:211: exec user process caused "no such file or directory"
但是当我在apt -get install python3
部分运行release
时,它能正常工作吗?那么为什么要多级安装,如果我要重新安装python,对不起,如果我听起来转储
答案 0 :(得分:0)
简短的回答:如果您在最终映像中重新安装Python,则无需进行多阶段操作。
长答案:使用多阶段的原因之一是,在构建应用程序时需要特殊的应用程序和文件,而在运行时则不需要它们。在您的示例中,情况并非如此。
作为建议,您可以使用python3映像而不是自己安装它。这样可以简化您的Dockerfile:
FROM python:3
COPY test.py .
CMD [ "python", "./test.py" ]
如果您想了解有关多阶段Dockerfile背后原理的更多信息,请参阅我的Learn Docker书,并顺便说一句这是为菜鸟写的书。