Windows
和Docker
集成指南的延续。 这篇文章的目的是展示创建新的JVM
项目并将其作为Docker
容器在Windows
上运行的快速简便的方法。
在上 Docker
文章中,我描述了如何在Windows
驱动的PC上设置Docker
环境并运行现有的Docker
容器。 现在是时候创建自己的JVM
项目,创建Docker
映像并运行它了。
当需要在JVM
平台上快速制作原型时, Groovy
是绝佳的语言选择。 此外,在本指南中使用Groovy
是Docker
支持的JVM
微服务多语言性质的完美示例。 对于构建工具,我的自然选择是Gradle
,本指南也将使用它。
使用sdkman设置Gradle
可以手动安装Gradle
并将其添加到PATH
,但是存在sdkman
工具,该工具可以大大简化Gradle
和其他实用程序的安装。 因此,我建议花一些时间进行设置并将其用于Gradle
安装。
- 首先,应该安装
unzip
,因为sdkman
安装程序需要它。 在新的bash
控制台中执行。$ pacman -S unzip
- 然后安装
sdkman
。$ export SDKMAN_DIR="$HOME/.sdkman" && curl -s get.sdkman.io | bash
- 安装后,在
msys2
环境中运行sdkman
可能会出现问题。 原因在相应的GitHub Issue中进行了解释
- 要修复它,请打开文件
~/.sdkman/bin/sdkman-init.sh
并找到该行。if [[ -n "${CANDIDATE_NAME}" && -h "${CANDIDATE_DIR}" ]]; then
- 替换为。
if [[ -n "${CANDIDATE_NAME}" && -d "${CANDIDATE_DIR}" ]]; then
- 要修复它,请打开文件
- 现在,
sdkman
已准备就绪,打开新的bash
控制台并安装最新的Gradle
版本。$ sdk install gradle
- 检查
Gradle
是否正确安装(可能需要打开新的bash
)。$ gradle --version ------------------------------------------------------------ Gradle 2.9 ------------------------------------------------------------ Build time: 2015-11-17 07:02:17 UTC Build number: none Revision: b463d7980c40d44c4657dc80025275b84a29e31f Groovy: 2.4.4 Ant: Apache Ant(TM) version 1.9.3 compiled on December 23 2013 JVM: 1.8.0_45 (Oracle Corporation 25.45-b02) OS: Windows 8.1 6.3 amd64
Groovy示例应用程序
- 通过运行
Gradle
任务可以生成项目文件夹结构。$ gradle init --type groovy-library
- 生成后,可以删除
Library.groovy
和LibraryTest.groovy
。 - 创建主应用程序class.ua.eshepelyuk.blog.Hello.groovy
package ua.eshepelyuk.blog println "Hello from Docker by Groovy and Gradle" (1)
(1)在
Groovy
可以省略public static void main
声明尽管
gradle init
生成Gradle包装器脚本,但在本指南中我不会使用它们。 对于现实生活中的项目,我建议使用包装器,而不要依赖于本地Gradle
安装。为项目构建脚本启用Docker支持
使用
Gradle
您无需处理Dockerfile
和其他用于创建Docker
映像的事情。 有这个插件:))要启用和自定义它们,只需在
build.gradle
添加一些行,如下所述。启用插件
build.gradle
plugins { id 'groovy' id 'application' (1) id 'com.bmuschko.docker-java-application' version '2.6.1' (2) }
(1)用于构建可嵌入
Docker
映像的可运行应用程序的 插件(2) Docker支持插件
自定义插件
build.gradle
mainClassName = 'ua.eshepelyuk.blog.Hello' (1) docker { url = System.env.DOCKER_HOST.replaceAll("tcp", "https") (2) javaApplication { tag = "eshepelyuk/hellodockergradle:latest" (3) } }
(1)
application
插件的入口点(2)修复Java API的docker机器URL
(3)
Docker
镜像标签名称构建映像并运行Docker容器
在继续执行下一步之前,必须从
Docker
运行start.sh
脚本以进行Windows安装。 请参阅以前的帖子以获取详细信息。- 执行命令以创建
Docker
映像。$ gradle dockerBuildImage
- 通过运行
docker image
检查新映像是否可用。 命令输出应包括标记有eshepelyuk/hellodockergradle
新图像(从build.gradle
设置)。$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE .. eshepelyuk/hellodockergradle latest daa12bd8bb4f About a minute ago 649 MB ..
- 使用
docker run
启动容器,并检查输出是否与Hello.groovy
类的预期匹配。$ docker run eshepelyuk/hellodockergradle Hello from Docker by Groovy and Gradle
完整的项目代码可在My GitHub上获得
- 执行命令以创建
翻译自: https://www.javacodegeeks.com/2015/12/jvm-microservices-jvm-based-application-docker-container.html