【发布时间】:2020-04-17 22:22:44
【问题描述】:
我正在使用以下代码处理 Dockerfile
FROM python:3.4-alpine
COPY . /web
WORKDIR /web/api
RUN pip install -r ./requirements.txt
RUN adduser -D myuser
USER myuser
ENTRYPOINT ["python"]
CMD ["app.py"]
我的代码运行良好,但在使用 docker-compose up --build 时出现以下错误,
Step 4/8 : RUN pip install -r ./requirements.txt
---> Running in 99f13c64bc5d
Error loading shared library libpython3.4m.so.1.0: No such file or directory (needed by /usr/local/bin/pip)
Error relocating /usr/local/bin/pip: _Py_char2wchar: symbol not found
Error relocating /usr/local/bin/pip: _PyMem_RawStrdup: symbol not found
Error relocating /usr/local/bin/pip: PyMem_RawMalloc: symbol not found
Error relocating /usr/local/bin/pip: Py_Main: symbol not found
Error relocating /usr/local/bin/pip: PyMem_RawFree: symbol not found
ERROR: Service 'web' failed to build: The command '/bin/sh -c pip install -r ./requirements.txt' returned a non-zero code: 127
请帮我解决这个问题。
我已经安装了 python3,pip。
【问题讨论】:
-
试试
pip3而不是pip -
我猜 pip 应该可以工作,因为我自己最近在 docker 文件中使用了 pip 而不是 pip3。我猜问题出在你的目录结构上。它无法在容器中提到的 workdir 中找到 requirements.txt 文件。共享目录结构或提供 requirements.txt 的完整路径而不是相对路径。这应该有效。
-
@Mukesh,我的目录结构是as,在api目录下我有Dockerfile和requirements.txt
-
我觉得的问题是你的web目录中的所有文件都在容器内。我怀疑容器中的 web 内是否会有任何 api 目录。我建议你浏览这个 docker 目录一次,你会了解整个目录结构:github.com/iamjhamukesh/Docker/tree/master/… 或者更确切地说是我的 docker github 中的任何其他目录。所有这些代码都有效。根据我的说法,您的问题出在目录结构上。尝试根据 repo 对齐目录结构。它可能会起作用。
-
此外,如果以上所有方法都失败了,请尝试将您的工作目录更改为简单的 /web/ 或者如果您的容器中有 api 目录,那么您也可以尝试 /web/api/。不要忘记 /在 api 之后。它可能会起作用。让我们看看。
标签: python-3.x api docker pip