多级Dockerfile(Python venv)问题

2024-06-07 12:53:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用多阶段创建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'

Tags: installpipdockerrunfromaddappvenv
1条回答
网友
1楼 · 发布于 2024-06-07 12:53:20

您的运行时容器中仍然需要pyhton,因为您将上一个映像更改为alpine,所以它无法工作。提示一下,把你的CMDENTRYPOINT放在其中一个下面,通常不需要两个。尝试只使用ENTRYPOINT,因为您可以在运行时轻松地传递CMD,例如,更轻松地激活调试模式

编辑:请远离alpine for python应用程序作为you can get some weird issues about it。您可以使用“python\u version-slimbuster”图像,它们足够小

相关问题 更多 >

    热门问题