我正在尝试使用多阶段创建Python webapp docker映像,以缩小映像大小。。。现在大约是300mb。。。它还使用虚拟环境
docker图像构建并运行良好,直到我需要添加多阶段,所以我知道在这之后出现了问题。。。。你能帮我找出哪里不对劲吗
FROM python:3.8.3-alpine AS origin
RUN apk update && apk add git
RUN apk --no-cache add py3-pip build-base
RUN pip install -U pip
RUN pip install virtualenv
RUN virtualenv venv
RUN source venv/bin/activate
WORKDIR /opt/app
COPY . .
RUN pip install -r requirements.txt
## Works fine until this point ""
FROM alpine:latest
WORKDIR /opt/app
COPY --from=origin /opt/venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH" VIRTUAL_ENV="/opt/venv"
COPY . /opt/app/
CMD [ "file.py" ]
ENTRYPOINT ["python"]
如果没有VENV,它看起来像这样(仍然抛出错误“sh:python:notfound”):
FROM python:3.8.3-alpine AS origin
WORKDIR /opt/app
RUN apk update && apk add git
RUN apk --no-cache add py3-pip build-base
RUN pip install -U pip
COPY . .
RUN pip install -r requirements.txt
FROM alpine:latest
WORKDIR /home
COPY --from=origin /opt/app .
CMD sh -c 'python file.py'
您的运行时容器中仍然需要
pyhton
,因为您将上一个映像更改为alpine
,所以它无法工作。提示一下,把你的CMD
和ENTRYPOINT
放在其中一个下面,通常不需要两个。尝试只使用ENTRYPOINT
,因为您可以在运行时轻松地传递CMD
,例如,更轻松地激活调试模式编辑:请远离alpine for python应用程序作为you can get some weird issues about it。您可以使用“python\u version-slimbuster”图像,它们足够小
相关问题 更多 >
编程相关推荐