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

gradle

gradle

四门
您是否需要通过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

Transmodegradle-docker插件实际上是用于Gradle Docker的2个可用插件中的1个。 在其他插件通过本MuschkoGradleware是额外的功能有点更先进的,但是,我觉得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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值