Я использую новый экспериментальный синтаксис сборки докеров для многоэтапной сборки, например:
Докерфайл:
RUN --mount=type=cache,target=/home/build/.build-cache,gid=1000,uid=1001 ./build
удар:
DOCKER_BUILDKIT=1 docker build .
Отлично работает локально. В CI я каждый раз получаю новую среду докера, поэтому без кэширования.
Я могу экспортировать и импортировать файлы в env, но я не знаю, где находится кеш. Любые идеи?
Или я должен экспортировать/импортировать кеш через какую-то команду докера? Я прочитал https://docs.docker.com/engine/reference/commandline/build/#specifying-external-cache-sources и https://github.com/moby/buildkit#export-cache, но мне не ясно, что конкретно относится к сборке, что к докеру, или действительно ли это применимо к этому кешу, смонтированному в команду RUN Dockerfile.
Я добавил сюда общедоступный список неудачного теста, демонстрирующий то, на что я надеялся: gist.github.com/Mahoney/85e8549892e0ae5bb86ce85339db1a71/6308f1bdb062a8982017193b96d61ec00a7698c5
И эта более поздняя версия работает, но я ею не доволен - слишком много начальной загрузки: .github.com/Mahoney/85e8549892e0ae5bb86ce85339db1a71
docker buildx build ...
, и экспортировать/импортировать кэш(и) слоев из реестра, файловой системы или встроенного докера в окончательный образ. среда. com/titansoft-engineering/ и github.com/docker/buildx содержат дополнительную информацию. - person jbielick   schedule 22.04.2020COPY . .
, сбрасывая все кэширование слоев каждый раз, когда что-то меняется. Есть способы извлечь выгоду из кэширования слоев, но их сложно поддерживать. Совместное использование домашнего каталога пользователя gradle — это, безусловно, самый разумный способ кэширования. - person Robert Elliot   schedule 01.07.2020