我有一个要投入生产的 dockerized django 应用程序。但是自从我添加了 Imagefield Pillow 之后,我就很难在 Docker 容器中安装 Pillow。
据我了解,添加依赖项 jpeg-dev ibjpeg 和 zlib-dev 对于 django (?)应该足够了。使用下面的配置,我收到错误:
错误runserver:
product.Product.image: (fields.E210) Cannot use ImageField because Pillow is not installed.
HINT: Get Pillow at https://pypi.org/project/Pillow/ or run command "pip install Pillow".
product.Product.thumbnail: (fields.E210) Cannot use ImageField because Pillow is not installed.
HINT: Get Pillow at https://pypi.org/project/Pillow/ or run command "pip install Pillow".
如果我将 Pillow 添加到 requirements.txt(或放入pip install PillowDockerfile)中,我会在尝试构建容器时收到更长的错误消息。
无需放入pip install PillowDockerfile 或 requirements.txt - 这是我的配置。
Dockerfile:
# pull official base image
FROM python:3.7-alpine
# set environment varibles
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# set work directory
WORKDIR /usr/src/kitschoen-dj
RUN pip install --upgrade pip
# install psycopg2
RUN apk update \
&& apk add --virtual build-deps gcc python3-dev musl-dev \
&& apk add postgresql \
&& apk add postgresql-dev \
&& pip install psycopg2 \
&& apk del build-deps
&& apk add jpeg-dev \
&& apk add libjpeg \
&& apk add zlib-dev
# install dependencies
RUN pip install --upgrade pip
COPY ./requirements.txt /usr/src/kitschoen-dj/requirements.txt
RUN pip install -r requirements.txt
# copy entrypoint.sh
COPY ./entrypoint.sh /usr/src/kitschoen-dj/entrypoint.sh
# copy project
COPY . /usr/src/kitschoen-dj/
# run entrypoint.sh
ENTRYPOINT ["/usr/src/kitschoen-dj/entrypoint.sh"]
要求.txt
astroid==2.1.0
certifi==2018.11.29
chardet==3.0.4
Django==2.1.7
django-cors-headers==2.4.0
django-filter==2.1.0
djangorestframework==3.9.1
djangorestframework-simplejwt==3.3
gunicorn==19.9.0
httpie==1.0.2
httpie-jwt-auth==0.3.0
idna==2.8
isort==4.3.4
lazy-object-proxy==1.3.1
Markdown==3.0.1
mccabe==0.6.1
PyJWT==1.7.1
requests==2.21.0
six==1.12.0
urllib3==1.24.1
wrapt==1.11.1
我已经坚持了一段时间。有人可以帮忙吗?