docker 启动在容器创建文件_为Spring Boot App创建Docker容器

在本系列中,我们将为简单的Hello World创建一个Docker容器!使用Gradle OR Maven的Spring Boot应用

902ee85e6300f145499dc59f90c05aaf.png

在尝试本指南之前,您应该具有:

  • 约15分钟的时间
  • Spring Boot应用程序的基本知识
  • Docker基础知识
  • 使用Gradle或Maven构建Java应用程序的基本知识

先决条件:

  • JDK 1.8或更高版本
  • Docker
  • Gradle 4+或Maven 3.2+
  • 任意文字编辑器

如果您不使用Linux机器,则需要一个虚拟服务器。访问VirtualBox的下载站点,并为您的计算机选择版本。


一旦安装了所有必需的软件,就该从git下载源代码了

下载并解压缩本指南的源存储库,或使用Git对其进行克隆:

git clone https://github.com/shrikarvk/SpringBootOnDocker.git

选择Maven或Gradle构建代码。

如果您选择使用Maven,请按照以下步骤操作

了解克隆的git repo中存在的POM.xml

 org.springframework spring-boot-docker 0.1.0jarSpring Boot DockerGetting started with Spring Boot and Dockerorg.springframework.boot spring-boot-starter-parent 2.0.5.RELEASEmydocker1.8

pom.xml for docker

在这里,我们具有使用groupId和版本构建Docker所需的工件。在这里,我们提到了下一步将要构建的Docker映像的前缀。此配置指定将使用名称创建映像的强制性内容mydocker/spring-boot-docker

 org.apache.maven.plugins maven-dependency-plugin unpackpackageunpack${project.groupId} ${project.artifactId} ${project.version}

pom.xml for maven plugin

POM.xml的这一部分具有构建项目所需的插件

Spring Boot Maven插件收集了类路径上的所有jar,并构建了一个可运行的“ spring-boot-docker-0.1.0.jar”,这使执行和传输服务更加方便。它搜索公共static void main()方法以将其标记为可运行类。而且,它提供了一个内置的依赖项解析器,用于设置版本号以匹配Spring Boot依赖项。

如果您选择使用Gradle,请按照以下步骤操作

了解克隆的git repo中存在的build.gradle

buildscript { repositories { maven { url "https://plugins.gradle.org/m2/" } mavenCentral() } dependencies { classpath('org.springframework.boot:spring-boot-gradle-plugin:2.0.5.RELEASE') classpath('gradle.plugin.com.palantir.gradle.docker:gradle-docker:0.13.0') }}apply plugin: 'java'apply plugin: 'eclipse'apply plugin: 'idea'apply plugin: 'org.springframework.boot'apply plugin: 'io.spring.dependency-management'apply plugin: 'com.palantir.docker'group = 'mydocker'bootJar { baseName = 'spring-boot-docker' version = '0.1.0'}task unpack(type: Copy) { dependsOn bootJar from(zipTree(tasks.bootJar.outputs.files.singleFile)) into("build/dependency")}docker { name "${project.group}/${bootJar.baseName}" copySpec.from(tasks.unpack.outputs).into("dependency") buildArgs(['DEPENDENCY': "dependency"])}repositories { mavenCentral()}sourceCompatibility = 1.8targetCompatibility = 1.8dependencies { compile("org.springframework.boot:spring-boot-starter-web") }

build.gradle

这里,依赖项中添加的Spring Boot gradle插件收集了类路径上的所有jar,并构建了一个可运行的单个“ spring-boot-docker-0.1.0.jar”,这使执行和传输您的文件更加方便服务。它搜索公共static void main()方法以将其标记为可运行类。而且,它提供了一个内置的依赖项解析器,用于设置版本号以匹配Spring Boot依赖项。Docker依赖关系是构建Docker所必需的

该配置还指定以下内容

  • unpack jar文件的任务
  • 图像名称(或标签)是从jar文件属性中设置的,最终将显示为 mydocker/spring-boot-docker
  • 解压缩的jarfile的位置,我们可以在其中进行硬编码 Dockerfile
  • docker指向jar文件的构建参数

设置Spring Boot App

了解克隆的仓库中src文件夹下的Application.java类

package helloDockerWorld;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@SpringBootApplication@RestControllerpublic class Application { @RequestMapping("/") public String home() { return "Hello Docker World"; } public static void main(String[] args) { SpringApplication.run(Application.class, args); }}

application.java

该类被标记为@SpringBootApplication和@RestController,这意味着Spring MVC已准备好使用该类来处理Web请求。@RequestMapping映射/到home()仅发送“ Hello Docker World”响应的方法。该main()方法使用Spring Boot的SpringApplication.run()方法来启动应用程序。


在没有Docker容器的情况下(即在主机OS中)运行应用程序。

如果您使用的是Gradle,请在cmd下执行以构建jar,然后在8080端口运行该应用

./gradlew build && java -jar build/libs/spring-boot-docker-0.1.0.jar

如果您使用的是Maven,请在cmd下执行以构建jar,然后在8080端口运行该应用

./mvnw package && java -jar target/spring-boot-docker-0.1.0.jar

并转到localhost:8080以查看“ Hello Docker World”消息。

如果您能够看到“ Hello Docker World”消息,则表明Spring Boot App已在Tomcat中启动并运行。但是还没有容器化。


我们将其容器化

了解克隆的仓库中的Dockerfile

FROM openjdk:8-jdk-alpineVOLUME /tmpARG DEPENDENCY=target/dependencyCOPY ${DEPENDENCY}/BOOT-INF/lib /app/libCOPY ${DEPENDENCY}/META-INF /app/META-INFCOPY ${DEPENDENCY}/BOOT-INF/classes /appENTRYPOINT ["java
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值