用于执行 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 命令行参数