docker - 构建失败时的 Docker 挂载类型绑定
问题描述
我正在使用 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
,我们也不需要再次下载缓存的库。
解决方案
推荐阅读
- python - Python写入文本文件并避免重复值
- python - 我有一个 numpy 文件,它是一个百分比数组,如何将其转换为只有高于 0.3 的值才是是/否数据库?
- javascript - 检查按钮是否被点击
- ios - iOS 14 在 UICollectionView FlowLayout 上崩溃
- postgresql - 如何将多个 WHERE 语句添加到表连接?
- javascript - 如何使用谷歌应用脚本移动列并按特定顺序排列?
- python - matplotlib 中的 DateLocator 显示一周和一个月的第一天
- php - laravel 护照:已弃用注册日期声明
- java - REST 服务 (JakartaEE) 中的 PUT 方法无法与 HashMap 键一起正常工作
- package.json - 获取 shields.io 徽章的包依赖项大小/计数/数量