随心一记

一二三四五,上山打老鼠


  • 首页

  • 归档

  • 标签
ywcsb

ywcsb

游戏可以不玩,小说不能不看。

153 日志
3 分类
42 标签
RSS
GitHub 知乎 随心一记
Links
  • 随心一记
  • 追梦人物的
  • MSDN

Dockerfile 加速构建

发表于 2024-04-28 | 阅读 2022 | 分类于 系统运维 |

当使用 Dockerfile 构建 Java 应用程序时,可以使用 BuildKit 的 --mount=type=cache 参数来加速构建过程。BuildKit 的缓存功能可以利用之前构建层的缓存,从而加快构建速度。这对于 Java 应用程序而言尤其有用,因为 Java 应用程序的构建通常涉及到大量的依赖下载和编译过程。

下面是一个示例 Dockerfile,演示如何使用 BuildKit 的缓存功能构建 Java 应用程序:

# 使用 AdoptOpenJDK 作为基础镜像
FROM adoptopenjdk:11-jdk-hotspot AS builder

# 设置工作目录
WORKDIR /app

# 将 Maven 依赖列表复制到工作目录中
COPY pom.xml .

# 下载 Maven 依赖(这一步将使用 BuildKit 缓存)
RUN --mount=type=cache,target=/root/.m2 mvn,id=my-java-app dependency:go-offline

# 复制应用程序源代码
COPY src ./src

# 构建应用程序
RUN --mount=type=cache,target=/root/.m2 mvn,id=my-java-app mvn package

# 使用 adoptopenjdk:11-jre-hotspot 作为最终镜像
FROM adoptopenjdk:11-jre-hotspot

# 将构建好的 Java 应用程序复制到最终镜像中
COPY --from=builder /app/target/my-java-app.jar /app/my-java-app.jar

# 指定容器启动时运行的命令
CMD ["java", "-jar", "/app/my-java-app.jar"]

挂载缓存目录必须在RUN里面执行,后面直接跟构建命令。

注意这里建议设定 id 参数,因为不提供 id 参数的话,id 的默认值为 target 的值,这样一旦我们以后想修改 taget 路径,就很麻烦。 指定 id 后,target 的路径随意修改扔不会影响结果。

参数 –mount=type=cache 参数说明
id id 设置一个标志,以便区分缓存。
target (必填项) 缓存的挂载目标文件夹。
ro,readonly 只读,缓存文件夹不能被写入。
sharing 有 sharedprivatelocked 值可供选择。sharing 设置当一个缓存被多次使用时的表现,由于 BuildKit 支持并行构建,当多个步骤使用同一缓存时(同一 id)会发生冲突。shared 表示多个步骤可以同时读写,private 表示当多个步骤使用同一缓存时,每个步骤使用不同的缓存,locked 表示当一个步骤完成释放缓存后,后一个步骤才能继续使用该缓存。
from 缓存来源(构建阶段),不填写时为空文件夹。
source 来源的文件夹路径。
觉得不错,支持一下!
geerniya WeChat Pay

微信打赏

geerniya Alipay

支付宝打赏

# 系统运维 # docker
openvpn脚本认证
SentenceTransformer 向量量化:如何设置通用的 calibration_embeddings 参数

发表评论

共 0 条评论

    暂无评论
© 2018 - 2022 ywcsb
冀ICP备17022045号-1
Supported by 腾讯云