Search
Write a publication
Pull to refresh

Comments 16

Не совсем понял, пакеты питона не компилируются в бинарники, в редких случаях содержат скомпилированные библиотеки. Если совсем хочется без пакетов, то нужно смотреть в сторону cyphon. Есть еще .pyc файлы - байткод питона, можно их попробовать потаскать в финальный образ, но я не пробовал и не понимаю, какие могут быть проблемы

Нужно собрать питон из исходников, для сборки нужна куча зависимостей. Если После сборки не понятно, как перетащить собранный питон, разбросанный своим телом по системным папкам. Разве что делать пакет deb или rpm но вот с ними возиться не очень хочется, хочется простым копированием файлов обойтись

почему не хотите готовый образ использовать? python:3.12-slim-bookworm - этот без всякой шелухи.

Почему же, есть nuitka. Это не упаковщик как фриз или пайинстайлер.

Сделать из содержимого подкаталога файл squash_fs.img несложно. А вот как подсунуть его в docker? Ведь слои то в нем и состоят из таких образов (нового вроде ничего не придумали), смонтированных с помощью overlayfs (в OpenVx всё было попонятнее как то)

А зачем? Копирование даст тот же результат, но без squashfs.

Разница в объёме занимаемого результатом дискового пространства? Не? Ну если только результат автоматом превращается в squshfs образ или используется сжатие на уровне файловой системы (пока докер не изучал, а для openvz образы сжимал с помощью suashfs и монтировал перед запуском)

Разница в объёме занимаемого результатом дискового пространства? Не?

Ну если так очень нужно, не вижу препятствий втащить образ squashfs внутрь docker image и смонтировать через loop.

Спасибо!
Я не уверен что понял чем mount лучше/удобнее чем "стандартное" копирование файлов при multi-stage build.

когда копируете что-то постоянное, чем будете пользоваться в рантайме, то COPY --from,а когда нужно в рантайм контейнере что-то временное получить из предыдущего этапа, то RUN --mount

Сам узнал о такой фишке недавно, когда искал докерфайл для приложения на Rust. Очевидно, что по-хорошему не стоит копировать в слои исходные коды, если в итоге нужен будет лишь бинарник. Так, я увидел роскошный пример на сайте докера, где использовались эти бинды, причём и для кэша сборки отдельный обработчик есть, что ускоряет пересборку, что важно при разработке.

https://docs.docker.com/guides/rust/develop/

Ещё можно задействовать команду ONBUILD, если создаём базовый образ и нам нужна куча распаковагнных файлов в потомке, то эта команда для нас. Она срабатывает тогда, когда собирается наследуемый образ.

https://docs.docker.com/reference/dockerfile/#onbuild

Sign up to leave a comment.

Articles