Docker размер изображения и передовые методы кэширования слоев - PullRequest
3 голосов
/ 05 августа 2020

Здесь может быть вопрос новичка. Я экспериментировал со сборками Docker для своего проекта Meteor и заметил, что в репозитории this популярного базового образа автор предлагает использовать devbuild во время разработки и onbuild для производства.

devbuild

ONBUILD RUN bash $METEORD_DIR/lib/install_meteor.sh  # install dependencies
ONBUILD COPY ./ /app
ONBUILD RUN bash $METEORD_DIR/lib/build_app.sh  # build the app

vs onbuild

ONBUILD COPY ./ /app
ONBUILD RUN bash $METEORD_DIR/lib/install_meteor.sh  # install dependencies
ONBUILD RUN bash $METEORD_DIR/lib/build_app.sh  # build the app

Я предполагаю, что первый использует слой Docker возможность кэширования для ускорения сборки, и он предупреждает, что использование devbuild для окончательной сборки приведет к гораздо большему образу, чем необходимо, поскольку он содержит полную установку метеора.

Это, похоже, противоречит тому, что я читал в руководствах вроде это из Docker Quickstart и this , в которых рекомендуется сначала установить зависимости, чтобы их можно было кэшировать.

Есть ли разница между ситуацией, представленной в справочнике Meteor, и руководствами по узлам, и как лучше всего построить эти зависимости в производственной среде?

...