公司动态
gradle-docker 插件完全指南:在 Gradle 构建脚本中一键构建 Docker 镜像
gradle-docker 插件完全指南在 Gradle 构建脚本中一键构建 Docker 镜像【免费下载链接】gradle-dockerA Gradle plugin to build Docker images from the build script.项目地址: https://gitcode.com/gh_mirrors/gra/gradle-dockergradle-docker 插件是一款让 Java/Gradle 开发者直接在构建脚本中定义并构建 Docker 镜像的开源 Gradle 插件。它把 Dockerfile 的编写、镜像构建、甚至推送到镜像仓库这些繁琐操作全部封装成简洁的 Gradle 任务让你不用离开构建脚本就能完成构建 Docker 镜像这件事。对于正在使用 Gradle 打包 Java 应用、又希望快速上手容器化的新手来说这是一份非常友好的入门指南。为什么你需要 gradle-docker 插件传统做法里你通常要手写 Dockerfile、手动执行docker build还要操心镜像标签、上下文目录等细节。而 gradle-docker 插件带来的核心价值有三个构建脚本即镜像定义在build.gradle里直接声明基础镜像、运行命令、端口等无需单独维护 Dockerfile与构建流程无缝集成作为 Gradle 任务天然参与增量构建、依赖管理等机制一键完成构建与推送构建镜像后可直接推送镜像到仓库全流程自动化。快速开始三步完成镜像构建 ⚡第一步在构建脚本中声明插件首先在你的build.gradle中配置插件依赖。以 1.2 版本为例buildscript { repositories { jcenter() } dependencies { classpath se.transmode.gradle:gradle-docker:1.2 } } apply plugin: docker第二步定义镜像构建内容通过docker扩展块设置全局配置再创建一个Docker类型的任务来描述镜像内容group foo docker { baseImage ubuntu maintainer Guillaume J. Charmes guillaumedotcloud.com } task nginxDocker(type: Docker) { applicationName nginx runCommand apt-get update runCommand apt-get install -y nginx }第三步执行任务构建镜像./gradlew nginxDocker执行后插件会先在本地生成一份 Dockerfile再调用 Docker 完成镜像构建最终得到名为foo/nginx的镜像。整个过程完全自动这就是在 Gradle 构建脚本中一键构建 Docker 镜像的体验。提示项目自带的示例工程就放在examples/simple目录下跑一遍./gradlew nginxDocker就能直观感受效果。Dockerfile 指令与 Gradle 方法对照表 插件把常用的 Dockerfile 指令封装成了直观的 Gradle 方法新手无需记忆 Dockerfile 语法也能上手Dockerfile 指令Gradle 任务方法作用ADDaddFile(...)添加文件到镜像CMDdefaultCommand(list)设置默认命令ENTRYPOINTentryPoint(list)设置入口点ENVsetEnvironment(key, val)设置环境变量EXPOSEexposePort(port)暴露端口RUNrunCommand(cmd)执行构建命令USERswitchUser(name)切换运行用户VOLUMEvolume(paths...)声明数据卷WORKDIRworkingDir(dir)设置工作目录当然你也完全可以复用已有的 Dockerfile把dockerfile属性指向外部文件路径即可甚至可以在外部 Dockerfile 基础上继续追加指令灵活度很高。高级玩法与 Application 插件结合 如果项目已经使用了 Gradle 自带的 application 插件gradle-docker 会自动为你添加一个distDocker任务。它会把你用distTar打包好的应用包括 libs、启动脚本等整体构建成可直接运行的 Docker 镜像基础镜像还会根据项目的targetCompatibility自动选择对应的 Java 运行时版本。apply plugin: application apply plugin: docker执行./gradlew distDocker即可一步生成可运行镜像。像examples/applicationJetty 示例和examples/sparkSpark 示例目录下的工程都演示了这种组合用法生成的镜像大致长这样FROM openjdk:7-jre EXPOSE 8080 ADD docker-jetty-1.0.tar / ENTRYPOINT [/docker-jetty/bin/docker-jetty]构建完成后用docker run -p 8080:8080 镜像名就能直接访问你的应用了。镜像标签规则一文看懂 ️镜像标签按如下规则自动生成tag ${project.group}/${applicationName}:${tagVersion}project.groupGradle 标准属性未设置时省略前缀applicationName应用名称默认取项目名tagVersion版本号默认取project.version未设置则为latest。比如设置group org.acme、applicationName foobar、tagVersion 13.0最终镜像名就是org.acme/foobar:13.0。相关实现可参考 DockerTaskBase.groovy。进阶配置远程 API 与推送镜像 ️默认情况下插件调用本地的docker命令来构建镜像如果你希望走 Docker 远程 API只需在docker扩展块中开启useApidocker { useApi true hostUrl http://myserver:4243 apiUsername user apiPassword password }此外在 Docker 任务上设置push true构建完成后插件会自动把镜像推送到仓库设置dryRun true则只生成 Dockerfile 和上下文目录不真正调用 Docker非常适合调试和 CI 预检。常见问题速查 Gradle 版本要求需要 Gradle 2.x 及以上Docker 0.11没有配置基础镜像怎么办插件会根据targetCompatibility自动挑选带对应 Java 运行时的基础镜像Java 7 项目默认拿到 Java 7 运行时只想生成 Dockerfile 不构建开启dryRun即可想深入源码学习核心实现集中在src/main/groovy/se/transmode/gradle/plugins/docker/目录如 DockerPlugin.groovy 和 DockerTask.groovy完整的配置说明可查阅项目根目录的README.md和CHANGELOG.md。写在最后 gradle-docker 插件让在 Gradle 构建脚本中一键构建 Docker 镜像从理想变成了日常操作告别手写 Dockerfile 的繁琐把镜像构建、标签管理、仓库推送全部纳入统一的 Gradle 工作流。如果你正在做 Java 应用的容器化不妨克隆这个项目仓库地址https://gitcode.com/gh_mirrors/gra/gradle-docker跑一跑示例几分钟就能感受到它的便利。现在就从第一个distDocker任务开始你的容器化之旅吧【免费下载链接】gradle-dockerA Gradle plugin to build Docker images from the build script.项目地址: https://gitcode.com/gh_mirrors/gra/gradle-docker创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考