Подушка не устанавливается после удаления .временные сборки

#django #docker #python-imaging-library #alpine

Вопрос:

Ошибка

 ERRORS: app_1 | core.Page.image: (fields.E210) Cannot use ImageField because Pillow is not installed.  

Похоже, что подушка обнаружена как не установленная в моем контейнере docker, если я удалю .temp-сборки после установки requirements.txt. Я говорю это, потому что, если я удалю «apk del .tmp-deps«, ошибка исчезнет. Тем не менее, я хочу удалить сборки .tmp, потому что я узнал, что лучше всего сделать контейнер docker как можно более компактным.

Докерфайл

 RUN python -m venv /py amp;amp;  /py/bin/pip install --upgrade pip amp;amp;  apk add --update --no-cache postgresql-client amp;amp;  apk add --update --no-cache --virtual .tmp-deps  build-base postgresql-dev musl-dev linux-headers  python3-dev zlib-dev jpeg-dev gcc musl-dev amp;amp;  /py/bin/pip install -r /requirements.txt amp;amp;  apk del .tmp-deps  

requirements.txt

 djangogt;=3.2.3,lt;3.3 psycopg2gt;=2.8.6,lt;2.9 uWSGIgt;=2.0.19.1,lt;2.1 djangorestframework gt;=3.12.4, lt;3.20.0 Pillow gt;= 8.4.0, lt;8.5.0  

Любой указатель был бы сильно истощен.

Ответ №1:

Хорошо. Посмотрев файл dockerfile, я увидел, что postgresql-клиент не находится в e-virtual .tmp-deps. Это означает, что некоторые зависимости должны оставаться в контейнере, чтобы какой-то пакет работал (для меня это было не очевидно).

Из этого я узнал, что мне нужно включить jpeg-dev в строку .tmp-deps.

Обновленный файл Dockerfile

 RUN python -m venv /py amp;amp;  /py/bin/pip install --upgrade pip amp;amp;  apk add --update --no-cache postgresql-client jpeg-dev amp;amp;  apk add --update --no-cache --virtual .tmp-deps   build-base postgresql-dev musl-dev linux-headers python3-dev gcc zlib-dev amp;amp;  /py/bin/pip install -r /requirements.txt amp;amp;  apk del .tmp-deps amp;amp;