gpt4 book ai didi

python - Slim Python Dockerfile 未执行

转载 作者:行者123 更新时间:2023-12-02 19:21:44 26 4
gpt4 key购买 nike

我为我的应用程序创建了一个 slim 的 docker 文件:

FROM python:3.7-slim-stretch AS build
RUN python3 -m venv /venv

RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y git && \
apt-get install -y build-essential && \
rm -rf /var/cache/apt/* /var/lib/apt/lists/*

ADD ./requirements.txt /project/
RUN /venv/bin/pip install -r /project/requirements.txt

ADD . /project
RUN /venv/bin/pip install /project
WORKDIR /project

FROM python:3.7-slim-stretch AS production
COPY --from=build /venv /venv
CMD ["/venv/bin/python3","-m", "myapp"]

docker 正在 build 和工作。正在运行的 python 可执行文件是从构建镜像中复制的。 (已验证,如果我删除“/venv/bin”,它将不会运行)。
但是,为了节省一些空间,我想将我的生产基地 docker 更改为:
FROM debian:stretch-slim
但后来我收到一个错误:
docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"/venv/bin/python3\": stat /venv/bin/python3: no such file or directory": unknown.

现在,我不明白这个错误。我可以看到 python 可执行文件在那里,为什么他不会运行?基础 python docker 镜像中的什么允许它运行?

最佳答案

进入您的venv在您的容器中和 ls -l bin 目录。
lrwxrwxrwx 1 root root 21 Dec 4 17:28 python -> /usr/local/bin/python
python在那里,但它是一个不存在的文件的符号链接(symbolic link)。

您可以使用 RUN python3 -m venv --copies /venv 来解决第一个问题。在你的 Dockerfile 中。

但是您随后会遇到以下错误消息:

error while loading shared libraries: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory



因此,您最终需要在镜像中安装与构建时可用的版本完全相同的 python 版本。

关于python - Slim Python Dockerfile 未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59179674/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com