Были ли проблемы с использованием Alpine образов?
Что проверяют
Понимаете ли вы, что Alpine это не «маленький Debian», а другая стандартная библиотека C со своими последствиями для Python. Вопрос про опыт, поэтому ждут конкретную историю. Следом обычно спрашивают, какой базовый образ вы выбираете сейчас и почему.
Как отвечать
Корень проблем: Alpine собран на musl, а не на glibc. Отсюда типичный список:
- колёса: обычные
manylinuxwheels на musl не ставятся. Стандартmusllinux(PEP 656) это исправил, крупные пакеты вродеnumpyиcryptographyпубликуют такие сборки, но не все и не для всех версий. Нет колеса, иpipсобирает из исходников: нужныgcc,musl-dev, заголовки библиотек, сборка идёт минутами, образ растёт; - производительность: аллокатор памяти musl заметно медленнее под многопоточной нагрузкой, а стек потока по умолчанию маленький, и тяжёлый код в потоках иногда падает там, где на glibc работал;
- DNS: старые версии musl не переходили на TCP при большом ответе резолвера, в Kubernetes это давало плавающие ошибки;
- окружение: нет
bash,tzdata, привычных утилит для отладки, всё это доставляется черезapk.
Покажите, как решали. Сборочные зависимости ставят через apk add --virtual .build-deps и удаляют в том же слое, либо используют multi-stage: колёса собираются на первом этапе, в финальный образ попадают только они. Но чаще разумнее взять python:3.x-slim на Debian: колёса ставятся без сборки, а разница в размере после установки зависимостей невелика.
Расскажите свою историю: какая библиотека не собралась, сколько шла сборка, на каком образе остановились. Если с Alpine вы не работали, скажите, что используете slim или distroless, и объясните выбор через musl.
Где спотыкаются
Берут Alpine «потому что маленький», не проверив итог. С компилятором и заголовками образ часто выходит больше, чем slim.
Смешивают apk и pip. На официальном python:alpine пакет вроде py3-numpy тянет системный Python из репозитория Alpine, и в образе оказываются два интерпретатора с разными наборами библиотек.
Не знают про musl и объясняют падения «кривой библиотекой». Интервьюер ждёт, что вы назовёте причину.