Comments 16
Hello world можно сделать еще меньше - добавьте эти строчки в Cargo.toml
[profile.release]
strip = true
lto = true
panic = 'abort'
Для безопасности попробуйте еще https://console.cloud.google.com/gcr/images/distroless/GLOBAL/static-debian12:latest/details?pli=1
Но вы должны быть готовы что не сможете никак отлаживать контейнер, т.к. там вообще ничего нет, ни шелла ни даже glibc
Спасибо, это очень хорошая идея - оптимизировать сборку, буду дальше пробовать и экспериментировать
можете глянуть мои наработки https://github.com/aegoroff/bstore - образ весит 20 мегабайт, но там внутри SQLite есть и много чего еще
Ещё можно установить UPX и написать upx -9 ./path/to/compiled_program
И файл будет ещё меньше места занимать на диске,
но распаковываться будет , скорее всего, в оперативную память.
Может кому-нибудь пригодится, не для докера, а просто.
А можно сбросить ещё 60% при помощи upx
:upx --best --lzma my_rust_binary
Так, если вы написали уже сервис на Go, то почему решили вернуться на Rust?
По go мало информации, надеялся на сравнение. Но за гайд большое благодарю
Счастье это закончится на первом крейте с сишными зависимостями. А ещё, надо не забыть про сертификаты и всякое такое.
Ну бред же полный!!!
Возьмите nodejs http2, накиньте graphql-yoga или еще что попроще - envelop, hive. Потом соберите это все в 1 бандл без внешних зависимостей. На выходе 30-70mb потребление памяти
А зачем вообще нужен контейнер доя единственного исполняемого файла, который ни от чего не зависит?
Для удобной работы с зависимостями (кеширование) можно воспользоваться утилитой cargo-chef https://github.com/LukeMathWalker/cargo-chef . Почитать подробнее можно, например, тут https://www.lpalmieri.com/posts/fast-rust-docker-builds/
Самый маленький Docker образ Rust приложения