В этом случае нет, нет способа избежать переустановки всего в production.txt
.
Из официальных документов , в разделе Leverage build cache
:
Для инструкций ADD и COPY проверяется содержимое файла (ов) на изображении, и для каждого файла вычисляется контрольная сумма.Время последнего изменения и последнего доступа к файлам не учитывается в этих контрольных суммах.Во время поиска в кэше контрольная сумма сравнивается с контрольной суммой в существующих изображениях.Если в файле (файлах) что-либо изменилось, например, содержимое и метаданные, то кэш-память становится недействительной
Поскольку вы изменили production.txt
, кэш-память становится недействительной, и докер запускается с ранеедопустимый слой и устанавливает все.
Теперь, если у вас есть несколько файлов requirements.txt
, вы можете использовать некоторое кэширование, выполнив отдельные шаги копирования и установки:
COPY requirements1.txt
RUN pip install --no-cache-dir -r requirements1.txt
COPY requirements2.txt
RUN pip install --no-cache-dir -r requirements2.txt
Этомогут иметь и другие недостатки, но это может позволить вам частично сократить время переустановки, поместив долгоживущие пакеты, которые вряд ли будут обновляться в requirements1.txt
, и менее стабильные в requirements2.txt
.Изменение requirements2.txt
затем приведет к переустановке только этих требований.