Вы не редактируете изображение после его создания.Вы всегда запускаете docker build
с самого начала;он всегда работает в чистой среде.
Обратная сторона этого заключается в том, что Docker кэширует созданные изображения.Если у вас было изображение 01234567
, вы запустили RUN pip install -r requirements.txt
и получили изображение 2468ace0
, то при следующем запуске docker build
он увидит тот же исходный образ и ту же команду, пропустит выполнение работы и прыгнет напрямуюна выходные изображения.COPY
или ADD
изменяемые файлы делают кэш недействительным для будущих шагов.
Таким образом, стандартным шаблоном является
FROM node:10 # arbitrary choice of language
WORKDIR /app
# Copy in _only_ the requirements and package lock files
COPY package.json yarn.lock ./
# Install dependencies (once)
RUN yarn install
# Copy in the rest of the application and build it
COPY src/ src/
RUN yarn build
# Standard application metadata
EXPOSE 3000
CMD ["yarn", "start"]
Если вы только что-то измените в своем дереве src
, docker build
перейдет к шагу COPY
, поскольку файлы package.json
и yarn.lock
не изменились.