Last active
November 18, 2020 08:22
-
-
Save dbfun/355bd8ee89d21c32c5e9d57603a82462 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ШАГ 1 | |
# | |
# Копируем файлы npm-менеджера во временный каталог и запускаем установку пакетов | |
# Эти действия нужно разместить одними из первых, до копирования в образ исходных кодов | |
# Идея такая: докер использует слоеную файловую систему (каждый образ-слой), причем кеширует промежуточные слои. | |
# Если файлы ./package.json ./package-lock.json не менялись, то при создании образа докер | |
# просто пропустит этот шаг, а в консоли будет "образ взят из кеша" | |
# Если же файлы изменились (а это происходит значительно реже, чем меняются файлы исходных кодов проекта), | |
# то шаг будет выполнен. | |
# Если до этого шага разместить какие-то действия, которые меняют прошлые слои, то кеширование работать не будет, | |
# поэтому важно разместить это где-то в начале Dockerfile. Докер создает слои на каждое действие типа COPY, RUN, WORKDIR, и т.п. | |
ADD ./package.json ./package-lock.json /tmp/ | |
RUN cd /tmp && \ | |
npm install | |
# ШАГ 2 | |
# | |
# Тут делаем любые манипуляции с образом | |
# В данном случае - просто копирование исходных кодов в /srv | |
# Каталог node_modules на этом шаге не копируется, даже если он есть, | |
# по причине того, что в файле `.dockerignore` указано, что `/node_modules` нужно игнорировать | |
WORKDIR srv | |
ADD . /srv | |
# ШАГ 3 | |
# На этом шаге в каталоге /tmp находятся установленные node_modules, поэтому просто перемещаем | |
RUN mv /tmp/node_modules /srv |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment