用于执行 gradle bootBuildImage 命令的 Docker 映像

Posted

技术标签:

【中文标题】用于执行 gradle bootBuildImage 命令的 Docker 映像【英文标题】:Docker image for executing gradle bootBuildImage command 【发布时间】:2021-02-18 00:44:21 【问题描述】:

我正在寻找一个 docker 镜像来构建我的 gradle 项目,该项目还需要一个 docker 引擎来执行gradle bootBuildImage 命令。有什么推荐吗?

谢谢,

【问题讨论】:

【参考方案1】:

如果你使用 Gradle 包装脚本(你应该这样做),你可以使用任何你喜欢的图像,只要它上面有 Java。 OpenJDK 很适合。

如果您不使用包装脚本,则需要安装一个带有 Gradle 的图像。官方Gradle image应该可以。

但我认为您真正要问的是如何在容器内构建 docker 映像。 bootBuildImage 任务不需要本地的 Docker cli 工具,只需要连接到一个守护进程。该守护进程可以在远程主机上运行,​​但您也可以使其连接到容器外的本地主机。为此,请挂载本地 docker 套接字。

这是一个将当前目录挂载到容器中并通过 Gradle 的 Spring Boot 插件在其中构建 Docker 映像的示例:

docker run --rm \
  -v gradle-cache:/home/gradle/.gradle \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v "$PWD":/home/gradle/project \
  -w /home/gradle/project \
  gradle:6.7.0-jdk11 \
  gradle --no-daemon bootBuildImage

请注意,它将 Gradle 主目录保存在一个卷中,这意味着您不能同时运行此命令。不再需要时使用 docker volume rm gradle-cache 删除卷。

另请注意,它以 root 身份执行构建。

【讨论】:

以上是关于用于执行 gradle bootBuildImage 命令的 Docker 映像的主要内容,如果未能解决你的问题,请参考以下文章

离线环境下无法使用 gradle bootBuildImage 构建镜像

Gradle bootBuildImage 使用 docker:dind 服务在 GitLab CI/CD 中失败并显示“未找到摘要”

使用 gradle bootBuildImage 构建的 SpringBoot Docker 映像无法在 <1024 的任何端口上启动

用于 Spring Boot 中测试的 Gradle 命令行参数

错误:Gradle:任务“:core:compileJava”执行失败。 > 编译失败

gradle assemble productflavor android