web-dev-qa-db-fra.com

Django, Docker, Python - Impossible d'installer Oreiller sur Python-Alpine

J'ai un dockerized Django application que je veux mettre en production. Mais depuis que j'ai ajouté un oreiller imagefield est requis et que j'ai du mal à installer des oreillers dans le conteneur Docker.

Autant que je sache, l'ajout des dépendances Jpeg-dev ibjpeg & zlib-dev devrait être suffisante pour Django (?). Avec la configuration ci-dessous, je reçois l'erreur:

erreur sur 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".

Si j'ajoutez un oreiller à la configuration requise.txt (ou mettant pip install Pillow Dans le DockerFile) Je reçois un message d'erreur encore plus long tout en essayant de construire le conteneur.

Sans mettre pip install Pillow Dans DockerFile ou Exigences.txt - Ceci est ma configuration.

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"]

configuration requise.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

J'ai été coincé avec cela pendant un moment. Quelqu'un peut-il aider?

7
Xen_mar

Je viens d'ajouter ces lignes à mon dockerfile et ça a fonctionné

RUN apk add --update --no-cache --virtual .tmp gcc libc-dev linux-headers<br>
RUN apk add --no-cache jpeg-dev zlib-dev<br>
RUN apk del .tmp

Mon Dockerfile (en utilisant Python: 3.8-Alpine):

COPY ./requirements.txt /requirements.txt<br>
RUN apk add --update --no-cache --virtual .tmp gcc libc-dev linux-headers<br>
RUN apk add --no-cache jpeg-dev zlib-dev<br>
RUN pip install -r /requirements.txt<br>
RUN apk del .tmp
0
Alan Moraes