Комментарии 11
Говорить про новичков, а потом кидать dockefile с multi-stage, затем pre-commit hooks и тесты в gitlab-ci - сильно!
Хорошая статья
Ещё один шаг к совершенству кода и админства, плюсую.
Спасибо, обновил.
Поддержка секции dependency-groups
была добавлена в uv четыре дня назад в версии 0.4.27.
Если сравнивать с пакетом "poetry" то можете ли уточнить отличия?
Благодарю)
скорость, uv быстрее будет, см. https://github.com/astral-sh/uv/blob/main/BENCHMARKS.md
нейминги некоторых секций в файле pyproject.toml не соответствуют PEP-621
значительно медленнее uv
не умеет запускать скрипты from-scratch (см. https://docs.astral.sh/uv/guides/scripts/#declaring-script-dependencies)
Poetry - это инструмент только для работы с Python проектом, позволяющий управлять его зависимостями, собирать и публиковать пакет. Для решения всех задач по разработке этого недостаточно, нужны вспомогательные инструменты.
Со своей основной задачей Poetry справляется хорошо. uv может делать практически всё, что и Poetry, но в несколько раз быстрее.
Отличия uv, которые были замечены во время миграции:
1) Нет команды для создания шелла с активированным виртуальным окружением. Этот функционал планируют удалить из основного пакета Poetry в версии 2.0.
2) Разная логика фиксации зависимостей через тильду (~
) (Poetry, uv). Можно случайно обновить какую-нибудь зависимость до несовместимой версии.
3) Разные имена и структура секций в pyproject.toml
.
При:
https://github.com/hadolint/hadolint/wiki/DL3041
apt-get install --quiet --no-install-recommends --assume-yes \ build-essential \ libpq-dev \
без версий пакетов они часто будут меняться при каждой сборке образа
В текущем варианте нет повторной установки пакетов при каждой сборке образа, так как в большинстве случаев команда инструкции RUN
не меняется.
Не вижу особого смысла в фиксировании версии пакета build-essential
, так как логика приложения не зависит от него напрямую.
Версия фиксируется только у последнего пакета. Если обновить значение переменной python_version
, то произойдёт инвалидация кэша.
Также кэш будет инвалидироваться при обновлении базового образа ubuntu
. Для автоматической загрузки актуальных версий образов можно использовать опцию --pull
(docker buildx build).
Подробнее можно почитать тут.
Отличная статья про отличный инструмент!
Кстати, вчера вышла новая версия uv 0.5 :)
Обновляйтесь осторожно, у нас пайплайны не сразу заработали, пришлось в паре мест фиксить косяки небольшие.
Сборка Python проекта с uv и Docker