带有Gradle的Docker容器分为4个步骤
您是否需要通过Java Web应用程序创建Docker映像? 您在使用Gradle吗? 如果是这样,那么您距Docker nivana仅4步之遥。
对于此示例,我将使用一个简单的Spring Boot应用程序。 您可以在我的名为galoshe的Github存储库中找到所有源代码。
如果您还没有机会看到Spring Boot的实际应用,那您将大饱口福, 尤其是如果Simple和Java Web App这句话在同一句话中让您畏缩不前。 在我认真看一下Boot之前,那肯定是我长期以来的反应。
例如,一个快速而肮脏的“ 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插件: docker
和application
。
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容器分为4个步骤相关推荐
- gradle docker_带有Gradle的Docker容器分为4个步骤
gradle docker 您是否需要通过Java Web应用程序创建Docker映像? 您在使用Gradle吗? 如果是这样,那么您距Docker nivana仅4步之遥. 对于此示例,我将使用一个 ...
- 技术选型之Docker容器引擎
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | huashiou 来源 | https://s ...
- Docker容器及Spring Boot微服务应用
2019独角兽企业重金招聘Python工程师标准>>> Docker容器及Spring Boot微服务应用 1 什么是Docker 1.1 Docker的出现 问题一:项目实施环境复 ...
- 美团点评Docker容器管理平台
本文是郑坤根据第14期美团点评技术沙龙"你不知道的美团云"演讲内容整理而成,已发表在<程序员>杂志2017年1月刊. 美团点评容器平台简介 本文介绍美团点评的Docke ...
- Docker容器技术 笔记
Docker容器技术 Docker是一门平台级别的技术,涉及的范围很广,所以,在开始之前,请确保你完成:Java SpringBoot 篇(推荐完成SpringCloud篇再来)视频教程及之前全部路线 ...
- 微服务架构,springcloud核心组件和实战,docker容器
文章目录 前言 一.微服务开发基础 1.微服务架构开发 1.1单体架构的应用的困境 1.2 微服务架构 1.2.1 理解微服务架构 1.2.1 微服务的优缺点 1.3 微服务架构设计 1.3.1 微服 ...
- docker 容器技术
docker 容器技术 一.学习目标 了解 Docker 与虚拟机的不同点,相比的优势 掌握 Docker 的启动方法.镜像与容器操作 掌握 Mysql tomcat Nginx Redis 等容器的 ...
- Docker容器部署
1.Docker简介 1.1虚拟化 1.1.1什么是虚拟化 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器.网络.内存及存储等,予以抽象 ...
- docker安装、docker容器基本用法
docker的概念 Image(镜像) Container(容器) Repository(仓库) 镜像(Image)就是一堆只读层(read-only layer)的统一视角 容器(conta ...
最新文章
- mysql中如何设置过滤器_mysql 如何动态修改复制过滤器
- Drug Discovery Today | 频繁命中化合物机制探究:PAINS规则的局限性
- SubclassWindow和SubclassDlgItem
- 基于事件驱动架构构建微服务第11部分:持续集成
- html打印预览出现重叠,html – 使用打印模式css打印网页时页眉和正文内容重叠...
- java 类加载器卸载,【深入明白Java虚拟机 】类加载器的命名空间以及类的卸载...
- Gitlab项目迁移
- 6月全球浏览器份额之争:霸主IE份额持续降至54%
- linux运行关关采集器,杰奇远程采集教程linux下远程采集
- 深蓝学院-视觉SLAM课程-第4讲作业(T5矩阵微分,T6手写高斯牛顿,T7批量MLE)
- WTL 自绘控件库 (CQsAnimaStatic)
- 剑网3服务器延迟高,关于《剑网3》网络延迟的一些理论分析
- Android 图片文件读取
- A/B 测试:数据驱动的产品优化
- 文件夹成变成.exe 解决办法
- iphone连电脑服务器未响应,今天要闻iphone8无限转圈黑屏强制关机没反应(苹果电脑开不了机黑屏)...
- 【luogu 3397】地毯 差分
- C语言头文件下载迅雷,LLVM汇编|clang llvm(C语言编译器)下载v3.4 免费版 - 欧普软件下载...
- 解决Silverlight无法调试的问题
- 【MacOS】上班一条命令启动所需软件
热门文章
- 让浏览器认为现在处于登录状态
- controller如何保证当前只有一个线程执行_聊聊Spring线程安全,读完之后,大部分程序员收藏了......
- 利用ant构建 jsp-servlet-class-jar
- java中延迟_Java中的延迟分配
- jw摄像_Java命令行界面(第17部分):jw-options
- 琥珀ai_琥珀项目:Java的未来暴露
- portlet_平台策略:从Portlet到OpenSocial小工具再到渐进式Web应用程序:最新技术
- repl java9_Java 9抢先体验:与JShell进行动手实践– Java REPL
- jdk8分组统计字段和_JDK 8流和分组
- java se/ee_嗨,您好 。 。 ! 您如何评价Java / Java EE技能?