К
Канал Сурена
@Khorenyan2.6K подп.
1.9Kпросмотров
75.9%от подписчиков
9 марта 2026 г.
questionScore: 2.1K
А вы используете Docker multi-stage builds? Я полдня готовил пример с multi-stage сборкой Docker образа для запуска Python приложения на примере FastAPI бекенда в виде uv package: - ковырял официальные примеры от astral в доке и на гитхабе; - подтыкал разные переменные окружения для uv; - брал python из официального образа на docker hub, скачивал готовую сборку через uv; - делал и через один образ и через multi-stage; - собирал на классическом debian и использовал гугловый distroless; - в процессе изучал содержимое через dive, чтобы проанализировать скопированное в контейнер... И чет мне теперь это кажется лютой экономией на спичках. Вероятно, такой подход актуален для приложений, которые собираются в бинарь — тот же Go. Может быть, для Python-приложений оно и не надо? У меня для супер базового приложения пакеты могут весить 80-150 мегабайт(!) в зависимости от настроек. Сам питон весит сотню мегабайт. Смешно на фоне этого всего видеть сорсы простого приложения: 20-40 килобайт. А люди иногда зачем-то экономят и не ставят переносы, где те уже напрашиваются 😁 Плюс тудым-сюдым, и вот выходит контейнер на 300 мегабайт, и никакой дистролесс тут от этого не спасает — он же на самом деле нужен для безопасности, чтобы не было возможности запустить что-либо кроме основного приложения. Там специально всё-всё выпилено. Да, в debian slim сборках есть некоторые бинари, которые формально нам и не нужны вовсе, и можно без них. Но на фоне сотен мегабайт, какие-то 20-30 мегабайт вообще ни о чем будто бы. Реальная польза заметна, если через .dockerignore исключить из образа кэш от всяких инструментов: mypy, ruff, pytest, coverage, etc. Тут легко срезать сотню мегабайт. Но вы же и так используете игнор-файлы, да? Правда используете? Включаете ли компиляцию байткода на этапе сборки? Или готовы подождать пару секунд при старте контейнера, чтобы всё скомпилировалось на месте? Зато несколько десятков мегабайт можно сэкономить. А вы собираете питон приложения в multi-stage? Ставьте 🐳 если да Ставьте 👾 если нет Ну и в итоге-то.. нужно ли видео на эту тему? Тут как обычно: если подробно всё рассказывать, как я люблю, то это час-полтора материала. Чтобы объяснить, почему делаем именно так. Если надо, ставьте 🔥
1.9K
просмотров
2239
символов
Да
эмодзи
Нет
медиа

Другие посты @Khorenyan

Все посты канала →
А вы используете Docker multi-stage builds? Я полдня готовил — @Khorenyan | PostSniper