我正在使用 docker build kit 通过 docker image 构建。
我想绑定主机卷来缓存库,我使用的是挂载类型绑定。这是我的码头文件。(参考这里和这里)
# syntax = docker/dockerfile:experimental
FROM maven:3.6.2-jdk-8-slim AS build
WORKDIR /app
COPY ./pom.xml .
RUN --mount=type=bind,source=/home/ubuntu/.m2,target=/root/.m2,rw mvn clean dependency:go-offline -B
COPY ./src ./src
RUN --mount=type=bind,source=/home/ubuntu/.m2,target=/root/.m2,rw mvn package
FROM tomcat:9.0.30-jdk8-openjdk
COPY --from=build /app/target/service.war /usr/local/tomcat/webapps/
语法RUN --mount=type=bind,source=/home/ubuntu/.m2,target=/root/.m2,rw mvn clean dependency:go-offline -B
引发以下错误。
failed to solve with frontend dockerfile.v0:
failed to solve with frontend gateway.v0: rpc error: code = Unknown desc =
failed to build LLB: failed to compute cache key: "/home/ubuntu/.m2" not found: not found
我检查了,路径/home/ubuntu/.m2
存在。语法有问题吗?
我之前用过--mount=type=cache
,效果很好。我想切换到这个的原因是,如果下载的 maven 库存储在它自己的主机文件系统中,那么即使我们这样做docker system prune --all
,我们也不需要再次下载缓存的库。