LINUX.ORG.RU

Docker BuilKit и монтирование кеша

 


0

1

Привет.
Пробую я собрать докер-имедж с использованием монтирования кеша средствами Docker BuildKit.
Соответственно у меня есть Докерфайл со следующим содержимим:

# syntax=docker/dockerfile:1.0.2-experimental
FROM centos:centos7
# ...
RUN --mount=type=cache,id=mvncache,target=/root/.m2 \
    git clone https://github.com/... project && \
    cd project && \
    mvn clean package ...

Но код там клонируется с Гита, по этому что бы сборка кода не бралась с Docker Layer-кеша, нужно docker build запускать с --no-cache, но тогда не перестает работать и примонтированный кеш.
Запускаю сборку соответственно вот так:
export DOCKER_BUILDKIT=1
docker build --no-cache . -t ...

Хотя года два назад всё работало как надо.
Кто-то таким занимался? Как сделать что бы и кеш монтировался и layer-caching был отключен?

Ответ на: комментарий от intelfx

На других проектах так и делаем, но тут такой вариант не подходит.

sphericalhorse ★★★★★
() автор топика

Вообще как оказалось есть у билд-кеша GC, и он по умолчанию exec.cachemount кеш вроди как чистит когда в кеше больше 512 мегабайт.
И по идее этот гарбедж-коллектор можно выключить в /etc/docker/daemon.json вот так:

{
  "builder": {
    "gc": {
      "enabled": false
    }
  }
}

Но выключение этого GC нифига не помогло.
Завтра попробую на Гитхабе спросить чё да как.

sphericalhorse ★★★★★
() автор топика
Последнее исправление: sphericalhorse (всего исправлений: 1)

На Гитхабе предложили передавать id коммита параметром, что бы этап сборки не брался из кеша и запускать без --no-cache.

А то что у меня когда-то давно билд-кеш монтировался при использовании --no-cache опции — это по ходу бага была.

Вот и порешали.

sphericalhorse ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.