Изображение Docker без использования no-cache каждый раз, когда вы вносите изменения в свою ветку git

#git #docker #devops #docker-build

#git #docker #devops #docker-build

Вопрос:

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

А без кэша это обычно занимает много времени.

Что я делал, чтобы избежать этого процесса, так это каждый раз создавать новую ветку, содержащую новые изменения, а затем запускать docker build , что, я думаю, определенно не является хорошей практикой.

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

Есть ли какой-либо другой подход?

Комментарии:

1. Общая процедура, которую вы описываете, звучит нормально (как поддержание ветвей функций в системе управления версиями, так и docker build редактирование изображений из них). Какие конкретные проблемы у вас возникли? Что вы сделали для улучшения использования кэша? (Вам никогда не понадобится docker build --no-cache .)

2. @DavidMaze пример — в local уже есть изображение, которое я создаю из ветки, теперь есть изменения, которые я внес в ту же ветку. Docker не вносил никаких изменений, когда я пытался docker build создать новое изображение, а просто использовал предыдущее изображение и добавил новый тег в новое изображение. Кроме того, предположим, что у меня есть отдельный RUN оператор в моем Dockerfile, который включает git clone и устанавливает все необходимые зависимости за один шаг.

3. Вероятно, вам не следует RUN git clone использовать Dockerfile именно по этой причине.

4. @DavidMaze хорошо. Тогда есть ли лучший подход, который я должен использовать для создания нового изображения с обновленными изменениями из той же ветки без использования --no-cache ? Заранее спасибо

5. git pull amp;amp; docker build . должно работать нормально (опять же, при условии, что Dockerfile не пытается сам запускать git операции). Docker будет повторно использовать кеш из предыдущей сборки, пока COPY не будет изменен файл.