Comments 6
"Костыль + костыль + костыль"
В итоге получаем:
- более медленный запуск (pyinstaller + upx)
- отсутствие возможности использовать общие зависимости
Еще можно добавить, что страницы памяти будут выделятся не по требованию, и на каждый экземпляр запущенного приложения будет выделен как минимум объем памяти = размеру бинарника.
Спасибо за ответ, надеюсь в комментариях удастся собрать все плюсы и минусы, а также знающие люди предложат альтернативы, по типу Cython, Nuitka, PyOxidizer, py2exe.
И возможно узнаем правду, что же лучше использовать для таких задач, Go, Rust или всё же дальше мучать Python.
А как же без отладки скриптов правкой прямо в контейнере на проде? :(
На выходе мы получим образ с суммарным размеров всех слоев 952M, где 894M занимает базовый образ
docker.io/python:3.9-bullseye.
А почему бы не взять более подходящий python:3.9-slim, python:3.9-alpine* или distroless gcr.io/distroless/python3?
*alpine не советую для python на проде, т.к. могут быть приключения.
На мой взгляд главные недостаток - отсутствие shell в контейнере. Крайне неудобно отлаживать и искать проблемы на проде.
Статическое Python приложение в образе контейнера на базе scratch