Docker RUN ls показывает кешированные файлы

Я пытаюсь настроить контейнер докеров и использую RUN ls для отладки. Однако, когда я запускаю RUN ls, докер выводит следующее:

 ---> Using cache
 ---> 96223b1b0748

Я ожидаю, что он выйдет из файлов в папке. Кто-нибудь знает, что может происходить?

Вот мой полный Dockerfile:

FROM node:latest 

WORKDIR /app

COPY app .

RUN ls

Заранее спасибо!

Вы docker build или docker build --no-cache?

user2915097 12.04.2018 06:22

Возможный дубликат Отключить кеш для определенных команд RUN

Karl Richter 22.01.2019 15:37
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
2
4 265
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Самый простой способ нарушить это поведение - использовать флаг --no-cache во время сборки:

docker build --no-cache ...

Однако это сделает недействительными все кэшированные слои. Если вы по-прежнему хотите использовать кэшированные слои для слоев до инструкции RUN ls, вы можете поместить перед ней следующую строку:

ARG CACHE_TS=default_ts

А затем при каждой новой сборке присваивает этому аргументу новое значение:

docker build --build-arg CACHE_TS=$(date +%s) ...

См. Эту проблему Github: https://github.com/moby/moby/issues/22832

Другие вопросы по теме