python - 为什么我的容器找不到 pip 安装的包(通过 git)?

标签 python git docker pip

我有一个 Dockerfile

FROM ubuntu:xenial
LABEL maintainer="info@martin-thoma.com"

# Settings for the local user to create
ENV APP_USER docker
ENV APP_USER_UID 9999
ENV APP_USER_GROUP docker
ENV APP_USER_GROUP_GID 4711
ENV PYTHONIOENCODING utf-8

# Install and update software
RUN apt-get update -y && apt-get install -y --fix-missing git python-pip python-dev build-essential poppler-utils libmysqlclient-dev
RUN pip install pip --upgrade

# Copy projects code
COPY . /opt/app
WORKDIR /opt/app
RUN pip install -r requirements.txt

# Create user
RUN groupadd --gid ${APP_USER_GROUP_GID} ${APP_USER_GROUP} \
 && useradd --uid ${APP_USER_UID} --create-home -g ${APP_USER_GROUP} ${APP_USER} \
 && chown -R $APP_USER:$APP_USER_GROUP /opt/app

# Start app
USER docker
RUN mkdir -p /opt/app/filestorage
ENTRYPOINT ["python"]
CMD ["app.py"]

和一个requirements.txt

-e git+https://github.com/ecederstrand/exchangelib.git@85eada6d59d0e2c757ef17c6ce143f3c976d2a90#egg=exchangelib
Flask==0.12.2
fuzzywuzzy==0.15.1

当我将 exchangelib 行更改为 exchangelib (因此不使用 git,而是使用 PyPI 上的版本)时,它可以工作(但我的代码不能按我的需要工作)最近的一些更改)。

当我得到这个时,我得到:

web_1  | ImportError: No module named exchangelib

有什么问题吗? 为什么我的容器找不到 pip 安装的软件包(通过 git)?我该如何修复它?

我的直觉是问题是我以 root 用户身份安装它,但应用程序以另一个用户身份运行。 PyPI 软件包似乎已为所有用户安装,而可编辑的只是本地的。但我还是不知道如何解决。

最佳答案

简单地使用

git+git://github.com/ecederstrand/exchangelib.git@85eada6d59d0e2c757ef17c6ce143f3c976d2a90#egg=exchangelib

作为requirements.txt中的一行起作用。无需更改 docker 文件。

关于python - 为什么我的容器找不到 pip 安装的包(通过 git)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45717968/

相关文章:

java - 尝试使用 docker 运行 jar 时出现 "Unable to access jarfile"

python - 如何通过request.user过滤django-tastypie的ToManyField?

python - 用\and 分隔的十六进制数据是什么类型的?

git - git clone gitosis@host :gitosis-admin. git 的密码问题

git - 使用 Bash 将空格分隔的文件列表发送到 Git

java - Docker + Java + OpenCV,java.library.path中没有opencv_java342

python - 计算给定整数中的个数

python - 在 Bokeh python 中更改工具提示颜色的正确方法是什么?

git - 专注于 Visual Studio Code Git 源代码控制管理器更改的快捷方式

docker - 在 docker 容器中安装 PostgreSQL