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

问题描述

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

谢谢

解决方法

如果使用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身份执行构建。