3

我正在使用 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,我们也不需要再次下载缓存的库。

4

0 回答 0