yarn install我正在尝试在使用 Docker BuildKit 构建 Docker 映像时生成并重用缓存。纱线缓存保留在目录中.yarn/cache,并且永远不应包含在最终映像中(.yarn/cache相对于构建上下文根)。该.yarn/cache目录应该在多个构建之间共享,以便始终从热缓存启动并具有快速yarn install命令(即使我们由于 的更改而导致缓存未命中package.json)。如果我们可以在结束后访问.yarn/cache内容docker build,则可以轻松在多个构建之间共享,例如将其上传到 Amazon S3 或 GCS 存储桶。
我考虑过两种选择:
RUN --mount=type=bindRUN --mount=type=cache下面描述为什么这两种方法都不起作用。
(简化的)Dockerfile 如下所示:
ENV YARN_CACHE_FOLDER ".yarn/cache"
COPY package.json yarn.lock ./
RUN --mount=type=bind,source=.yarn/cache,target=.yarn/cache,rw yarn install --frozen-lockfile
Run Code Online (Sandbox Code Playgroud)
.yarn/cache不幸的是,命令结束后目录中不存在任何数据docker build。
rw选项文档中描述了没有保留数据的原因:Allow writes on the mount. Written data will be discarded。如果写入的数据被丢弃,那么第一次生成缓存的工作方式是什么?
RUN --mount=type=cache或者我考虑使用RUN --mount=type=cache. …
docker dockerfile yarnpkg google-cloud-build docker-buildkit