gradle docker

您是否需要通过Java Web应用程序创建Docker映像? 您在使用Gradle吗? 如果是这样,那么您距Docker nivana仅4步之遥。

对于此示例,我将使用一个简单的Spring Boot应用程序。 您可以在我的名为galoshe的Github存储库中找到所有源代码。

如果您没有机会看到Spring Boot的实际应用,那您将大饱口福, 尤其是如果SimpleJava Web App这句话在同一句话中让您感到畏缩。 在我认真看一下Boot之前,那肯定是我长期以来的React。

例如,一个快速而肮脏的“ hello world”启动应用实质上是比实际代码更多的导入和注释。 看看这个:

一个简单的Spring Boot应用程序

package com.github.aglover.galoshe;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application {public static void main(String[] args) {ApplicationContext ctx = SpringApplication.run(Application.class, args);}@RequestMapping("/")public String index() {return "Hello to you, world";}
}

运行此应用程序就像键入一样简单:

$ java -jar build/libs/galoshe-0.1.0.jar

该命令将启动一个带有请求路径/映射的嵌入式Web容器,以返回简单的String “ Hello to you,world”。 您可以通过application.properties文件定义此应用程序将在哪个端口上运行,如下所示:

application.properties

server.port: 8080

因此,如果我使用浏览器并将其指向localhost:8080,我会看到行人,但是当您看到它的称呼时,真是太可喜了。

既然已经介绍了我想作为Docker容器分发的应用程序,那么让我通过4个简单步骤向您展示如何做到这一点。

请记住,但是,为了插件我在这个例子中使用使用gradle这个-泊坞窗,你需要有码头工人作为插件安装弹出到docker命令。

第1步:应用一些插件

首先,要对应用程序进行Docker化,您需要使用两个Gradle插件: dockerapplication

Transmode的gradle-docker插件实际上是2个可用于Gradle Dockering的可用插件之一。 在其他插件通过本Muschko的Gradleware是额外的功能有点更先进的,但是,我觉得Transmode插件的最简单快捷的走了。

在我的特定示例中, application插件实际上是通过spring-boot插件自动包含的,但是,如果您不使用Boot,则需要将以下两个插件添加到build.gradle文件中:

apply plugin: 'application'
apply plugin: 'docker'

由于docker插件是第三方插件,因此您需要通过dependencies子句告诉Gradle如何找到它。

指定docker插件的类路径

buildscript {repositories { mavenCentral() }dependencies {classpath 'se.transmode.gradle:gradle-docker:1.1'}
}

现在,您的Gradle脚本已准备好开始Docker-ing。 接下来,您需要提供一些线索,以便插件可以创建有效的Dockerfile

步骤2:提供一些属性

该gradle这个-泊坞窗插件不直接创建一个泊坞窗的集装箱-它仅仅是创建一个Dockerfile ,然后弹出到docker命令来建立形象。 因此,您需要在build.gradle文件中指定一些属性,以便相应的Dockerfile构建一个有效的容器,该容器可以自动运行您的应用程序。

您需要提供:

  • 要运行的类,即应用程序中包含main方法的类
  • 目标JVM版本(默认为Java 7)
  • (可选 )一个组ID,该ID馈入相应的Docker标签。

因此,我的build.gradle定义了所有三个属性,如下所示:

定义Docker插件的属性

group = 'aglover'
sourceCompatibility = 1.7
mainClassName = 'com.github.aglover.galoshe.Application'

有关这些属性的一些注意事项。 首先,该插件当前不支持Java 8 。 如果不指定sourceCompatibility ,你会得到的Java 7,接下来, group不需要财产; 但是,它有助于Docker标记。 例如,我项目的baseName被称为galoshe ; 因此,当插件创建Docker映像时,它将使用模式group/name标记该映像。 因此,在我的情况下,相应的图像被标记为aglover/galoshe

最后, mainClassName不会太令人惊讶-它是应用程序的钩子。 实际上,该插件将创建一个脚本,您生成的Docker映像将在启动时调用该脚本。 该脚本实际上将调用命令:

java -classpath your_class_path your_main_class

至此,您几乎完成了。 接下来,您需要指定任何Dockerfile指令。

步骤3:指定任何必需的Dockerfile指令

Dockerfile包含针对其创建的相应映像的专门说明。 有一些重要的 ; 但是,我的Boot应用程序仅需要一个: port ,它是通过插件的exposePort方法设置的。

因此,为确保我的Docker容器公开我的application.properites文件中定义的端口8080,我将在我的build.gradle文件中添加以下子句:

指定端口8080

distDocker {exposePort 8080
}

您可以通过插件处理的其他几个方面是: addFile导致ADD指令, runCommand导致RUN指令,最后setEnvironment产生ENV指令。

现在您已经完成了Gradle构建。 剩下要做的就是运行您的构建并启动映像!

步骤4:建立并执行

只要您已正确配置gradle-plugin,剩下要做的就是运行您的构建。 在这种情况下,命令就是distDocker

运行我的构建

$ ./gradlew distDocker

首次运行此命令时,会花费一些时间,因为将下载各种图像。 随后的运行将很快。

构建完成后,将使用我之前提到的标记创建图像。 在我的情况下,标签将是aglover/galoshe ,我可以通过运行images命令快速看到它:

列出可用的本地Docker映像

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
aglover/galoshe     latest              332e163221bc        20 hours ago        1.042 GB
dockerfile/java     latest              f9793c257930        3 weeks ago         1.026 GB

随后,我可以像这样运行图像:

运行我的容器

docker run 332e163221bc

我自然可以转到浏览器,点击localhost:8080,发现自己对我的图片很漂亮表示满意。

当然,我需要发布此图像供其他人使用。 尽管如此,如您所见,gradle-plugin允许我快速为Java应用程序创建Docker容器。

翻译自: https://www.javacodegeeks.com/2014/06/docker-containers-with-gradle-in-4-steps.html

gradle docker

gradle docker_带有Gradle的Docker容器分为4个步骤相关推荐

  1. 带有Gradle的Docker容器分为4个步骤

    您是否需要通过Java Web应用程序创建Docker映像? 您在使用Gradle吗? 如果是这样,那么您距Docker nivana仅4步之遥. 对于此示例,我将使用一个简单的Spring Boot ...

  2. vscode 连接docker_在VS Code中使用带Docker容器的Java开发环境 – Bruno Borge

    该文详细描述了如何在VS Code Studio中设置Docker容器开发Spring Boot应用,将Java环境安装在Docker而不是在自己电脑上有很多好处. 首先,准备Spring Boot一 ...

  3. 软件驱动安装在docker_低成本的无线打印:群晖上通过Docker容器实现Airprint

    原文作者:我的昵称已被注册 群晖NAS得益于高质量的软件设计和方便的使用体验深受家庭用户喜爱. 随着使用场景的扩展,各种功能的发掘也随着需求的增长不断出现.打印虽然是个古老的话题了,但是对于有打印需求 ...

  4. Docker容器及Spring Boot微服务应用

    2019独角兽企业重金招聘Python工程师标准>>> Docker容器及Spring Boot微服务应用 1 什么是Docker 1.1 Docker的出现 问题一:项目实施环境复 ...

  5. 技术选型之Docker容器引擎

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | huashiou 来源 | https://s ...

  6. docker容器 eureka 集成_微服务:基于 Docker 的微服务架构之分布式企业级实践参考...

    编者按:本文分享自CSDN技术博客,作者为 FlyWine,所有权归原著者.若有不妥,联系本头条号以做必要处理. 目录 Microservice 和 Docker 服务发现模式 客户端发现模式 Net ...

  7. 美团点评Docker容器管理平台

    本文是郑坤根据第14期美团点评技术沙龙"你不知道的美团云"演讲内容整理而成,已发表在<程序员>杂志2017年1月刊. 美团点评容器平台简介 本文介绍美团点评的Docke ...

  8. Docker容器技术 笔记

    Docker容器技术 Docker是一门平台级别的技术,涉及的范围很广,所以,在开始之前,请确保你完成:Java SpringBoot 篇(推荐完成SpringCloud篇再来)视频教程及之前全部路线 ...

  9. 微服务架构,springcloud核心组件和实战,docker容器

    文章目录 前言 一.微服务开发基础 1.微服务架构开发 1.1单体架构的应用的困境 1.2 微服务架构 1.2.1 理解微服务架构 1.2.1 微服务的优缺点 1.3 微服务架构设计 1.3.1 微服 ...

最新文章

  1. Pytorch+LSTM+AI自动写诗实战
  2. Android按钮事件的4种写法
  3. mysql 代替intersect_MySQL不支持INTERSECT和MINUS及其替代方法_MySQL
  4. C++horspool算法查找字符串是否包含子字符串(附完整源码)
  5. MT6580热设计要求
  6. drools 规则流_约束流–没有Drools规则语言的现代Java约束
  7. 2018.7.10 个人博客文章=利用ORM创建分类和ORM的内置函数
  8. oracle存储过程 取时间格式,Oracle存储过程获取YYYY-MM-DD的时间格式
  9. 文件流对象 c# 1614525948
  10. 突然有点想和你唠嗑了~
  11. 【算法】Quick Select
  12. 推荐一款Silverlight数据列表控件----AgDataGrid
  13. Windows程序设计的第一个实例
  14. linux下xp镜像文件iso下载,Windows XP SP3简体中文专业版[官方MSDN正式原版ISO镜像]
  15. 非华为电脑安装华为电脑管家|多屏协同|非华为电脑与matepad11多屏协同|matepad11连接联想yoga14s|老版华为电脑管家
  16. 在线画图工具ProcessOn
  17. 区块链和AI的比武,谁将登上黑科技这一宝座
  18. 你看我像不像学HTML的人(五)——链接标签、注释和特殊字符
  19. ios9系统无法下载应用问题分析与解决
  20. Html5 学习笔记 【PC固定布局】 实战6 咨询页面

热门文章

  1. 【最小生成树】水箱(P5952)
  2. 【笛卡尔树】【线段树】meetings 会议(P5044)
  3. K8S Learning(10)——Pod配置
  4. MongoDB查询实现 笛卡尔积,Union All 和Union 功能
  5. MySQL数据库开发的 36 条军规
  6. Vue.js2.0开发环境搭建(一)
  7. Java 父类子类的对象初始化过程
  8. 零基础写Java知乎爬虫之进阶篇
  9. “老师,我写着写着就 强制交卷了……”
  10. tomcat 实现 文件共享,查看文件目录