Comments 8
Странно, начав с упоминания Спринга, не рассказать в результате о Layered Jars, который потенциально даст гораздо большую экономию, чем чистка кэшей пакетов и прочие общеизвестные вещи.
А каким именно образом, из статьи следует, что это ускорит сборку докер образа за счёт того, что пересобирается только один слой, но на размер образа влиять не должно
Да, вы правы - но я как-то подсознательно имел в виду, что приложение у нас не одно, а следовательно - сэкономить можно на одинаковых "нижних спринговых" слоях.
Старайтесь использовать меньше слоев. Одинаковые или однородные инструкции можно писать в одном слое, что сделает ваш image чуть меньше.
Неверно! Это ошибка, которую все друг у друга копируют, не понимая смысла. Одна из задач слоев - кэширование результата этапа для ускорения сборки. Это требует вдумчивого подхода, особенно для образов, которые долго собираются.
А насколько образ станет меньше, при уменьшении кол-ва слоев, вы проверяли? ;)
Ох уж эти слои и святой Alpine. Каждая первая статья про это.
Удаление кэша
Устанавливая пакеты, в той же команде стоит очищать кэш, это может уменьшить размер image на несколько сотен мегабайт. К предыдущей команде дописываем удаление директории с кэшем.
# Install required packages to run
RUN DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get upgrade -y --fix-missing --no-install-recommends nginx \
&& apt-get clean -y && apt-get autoremove -y && apt-get autoclean -y && rm -r /var/lib/apt/lists/*
А почему упомянут только overlay, ведь есть еще btrfs, zfs, vfs
Docker для новичков — #4 Оптимизация Dockerfile