Docker – отличный инструмент даже для местного развития. В то же время управление требованиями Python в контейнерах может быть сложно. Красивое стандартное поведение – использовать требования .txt
Файл, который добавляет к изображению во время процесса здания. Обычно мы используем что-то подобное в Dockerfile
:
... COPY ./requirements /requirements.txt RUN pip install -U pip && pip install --no-cache-dir -r /requirements.txt && rm -rf /requirements.txt ...
Эти инструкции работают нормально для развертывания производства, но не очень полезно для этапа разработки. Периодически необходимо установить новую библиотеку. С использованием виртуальной среды, без Docker, мы могли бы использовать PIP Установить ...
а потом PIP Freeze> требования .txt
Для хранения информации установленные библиотеки в файл. Но с Docker это не так, потому что нам нужно установить библиотеки на этапе сборки. В то же время трудно изменить требования .txt
вручную без нарушения зависимостей.
Есть доступны менеджеры зависимостей Python, такие как Пипнв
или Поэзия
Отказ Но я предпочитаю использовать Pip-Tools
Потому что это более просто. Мы можем добавить его на изображение контейнера, улучшая следующую строку:
RUN pip install -U pip pip-tools && pip install --no-cache-dir -r /requirements.txt && rm -rf /requirements.txt
Корпус использования инструмента прост. Прежде всего, мы готовим файл с именем Требования. В
Это будет содержать список зависимостей. Каждая строка в этом файле является зависимостью. Мы также можем использовать одни и те же правила для управления версиями, как обычный PIP Установить
команда. Например:
django==3.1.* celery pillow
Теперь мы можем использовать команду требования к компиляции PIP.in
Для генерации требования .txt
со всеми необходимыми зависимостями. С Pip-Tools
Установлен в контейнере, мы можем использовать команду так:
docker run -rm ... pip-compile requirements.in
Теперь файл требования .txt
Будут сгенерированы, включая все необходимые зависимости описанных библиотек. Итак, можно восстановить контейнер для установки новых библиотек.
Вы можете проверить Pip-Tools
Документация Для доступных команд и вариантов. Например, как обновить определенную библиотеку. Это довольно простой, но мощный инструмент.
Оригинал: “https://dev.to/korkholeh/using-pip-tools-for-local-development-with-docker-4n35”