Среда сборки != Среда выполнения => или про то, о чем стоит помнить во время сборки Docker образов
За всю свою инженерную бытность я повидал всякое, особенно в Dockerfile`ах.
Там были и ssh сервера, и MSSQL Server, и systemd, и много чего еще.
Всегда стоит помнить о том, что в готовом образе должна должно быть только ваше приложение и только те библиотеки и зависимости, которые необходимы для его работы.
Такая история хорошо ложится на компилируемые языки программирования, а именно на многими любимый Golang.
Мы вполне можем применить multistage, в котором соберем наш "бинарь" в образе в котором есть все необходимое
для сборки, а дальше мы наш бинарь отправим в более легковесный образ, например, в Alpine.
По итогу мы получим небольшой образ, в котором нет ничего лишнего.
Его достаточно просто распространять, да и вектор атаки существенно ниже.
А еще мы можем "конкретно угореть" и собрать образ на базе scratch =)
Диагностические утилиты, точно стоит оставить за бортом =)
Не забывайте про это ^_^
Post #14
442

- 👍 11