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

时间:2017-08-16 15:46:21

标签: 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包,而可编辑只是本地的。但我仍然不知道如何解决它。

1 个答案:

答案 0 :(得分:1)

只需使用

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

作为requirements.txt中的一行工作。不需要更改docker文件。