问题描述
我正在寻找一个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身份执行构建。