#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;