Предполагая, что вы не запускаете другие команды до добавления package.json
, ваш Dockerfile
в порядке, и слой, добавляющий файл вашего пакета, кэшируется. Например, мы создаем простой Dockerfile, который просто добавляет ваш package.json
файл конфигурации:
FROM node:13.10.1-stretch as base
ADD package.json /app/package.json
Первый запуск:
$ docker build -t so-example .
Sending build context to Docker daemon 3.072kB
Step 1/2 : FROM node:13.10.1-stretch as base
13.10.1-stretch: Pulling from library/node
[...]
Status: Downloaded newer image for node:13.10.1-stretch
---> 7aef30ae6655
Step 2/2 : ADD package.json /app/package.json
---> a7bb80c06ecb
Successfully built a7bb80c06ecb
Successfully tagged so-example:latest
Второй запуск
$ docker build -t so-example .
Sending build context to Docker daemon 3.072kB
Step 1/2 : FROM node:13.10.1-stretch as base
---> 7aef30ae6655
Step 2/2 : ADD package.json /app/package.json
---> Using cache
---> a7bb80c06ecb
Successfully built a7bb80c06ecb
Successfully tagged so-example:latest
Как видите, кеширование работает. Не могли бы вы проверить это с помощью такого минимального примера? В большинстве случаев кеширование прерывается из-за неоптимального порядка. Пожалуйста, проверьте следующее:
- Выполните команду сборки дважды. Кэширование может работать только после первого запуска
- Убедитесь, что никакие другие шаги, которые вы, возможно, не опубликовали здесь, не были выполнены в вашем Dockerfile, который делает недействительным кеш
- Выполняются ли какие-либо команды очистки? Что-то вроде
docker prune
или docker image prune
(или ручной список / удаление изображений в старых версиях) приведет к удалению вашего изображения - Проверка / публикация ваших звонков, как вы строите изображение