#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
не будет изменен файл.