Ускоряем yarn в Docker в Gitlab Docker Runner и не только
11 января 2024

Docker, конечно, будет при сборке использовать кэш, если yarn.lock не поменялся.


Однако, можно использовать Buildkit и передавать yarn кэш от сборки к сборки. Это работает даже в docker runner который собирает docker compose. Для этого надо включить Buildkit через переменные окружения COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1. В моем случая в файле настроек pipeline CI/CD
# .gitlab-ci.yml
script:
- COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker compose -f docker-compose.test_spec.yml build --pull
"Волшебная" строчка выглядит так
# Dockerfile
RUN --mount=type=cache,target=/root/.yarn YARN_CACHE_FOLDER=/root/.yarn yarn install
вместо
RUN yarn install