使用Docker部署SpringBoot项目的实现方法

使用Docker部署SpringBoot项目的实现方法,第1张

使用Docker部署SpringBoot项目的实现方法

本文主要介绍用Docker部署SpringBoot项目的实现方法。通过示例代码进行了非常详细的介绍,对于大家的学习或者工作都有一定的参考价值。有需要的朋友下面和边肖一起学习。

Docker技术的发展,为微服务落地提供了更便捷的环境。使用Docker部署SpringBoot实际上非常简单。让我们简单看一下这篇文章。

首先,构建一个简单的SpringBoot项目,然后向该项目添加Docker支持,最后部署该项目。

一个简单的SpringBoot项目

在pom.xml中,使用SpringBoot2.0依赖项。

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> </parent>

添加web和测试依赖项

<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>

创建一个包含index()方法的DockerController,它将返回:HelloDocker!

@RestController publicclassDockerController{ @RequestMapping("/") publicStringindex(){ return"HelloDocker!"; } }

启动类

@SpringBootApplication publicclassDockerApplication{ publicstaticvoidmain(String[]args){ SpringApplication.run(DockerApplication.class,args); } }

添加后,启动项目。成功启动后,浏览器访问:http://localhost:8080/,页面返回:你好Docker!,这表明SpringBoot项目配置正常。

SpringBoot项目添加Docker支持

在pom.xml-properties中添加Docker图像名称

<properties> <docker.image.prefix>springboot</docker.image.prefix> </properties>

将Docker构建插件添加到插件:

<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!--Dockermavenplugin--> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <configuration> <imageName>${docker.image.prefix}/${project.artifactId}</imageName> <dockerDirectory>src/main/docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> <!--Dockermavenplugin--> </plugins> </build>

在目录src/main/docker中创建一个Dockerfile文件,用来解释如何构建镜像。

FROMopenjdk:8-jdk-alpine VOLUME/tmp ADDspring-boot-docker-1.0.jarapp.jar ENTRYPOINT["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

这个Dockerfile文件非常简单。构建Jdk基本环境,将SpringBootJar添加到映像中,并简单解释一下:

  • FROM,即使用Jdk8环境作为基础镜像,如果镜像不在本地,则从DockerHub下载。
  • VOLUME,VOLUME指向一个目录/tmp。由于SpringBoot使用内置的Tomcat容器,Tomcat默认使用/tmp作为工作目录。这个命令的作用是在主机的/var/lib/docker目录中创建一个临时文件,并将其链接到容器中的/tmp目录。
  • 添加、复制文件并重命名
  • ENTRYPOINT,为了缩短Tomcat的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为ENTRYPOINT。
  • 这样,SpringBoot项目增加了Docker依赖。

    构建打包环境

    我们需要一个Docker环境来打包SpringBoot项目,在Windows中搭建Docker环境比较麻烦,这里我就以Centos7为例。

    安装Docker环境

    固定

    yuminstalldocker

    安装后,使用以下命令启动docker服务并将其设置为boot:

    servicedockerstart chkconfigdockeron #LCTT译注:此处采用了旧式的sysv语法,如采用CentOS7中支持的新式systemd语法,如下: systemctlstartdocker.service systemctlenabledocker.service

    使用Docker中国加速

    vi/etc/docker/daemon.json #添加后: { "registry-mirrors":["https://registry.docker-cn.com"], "live-restore":true }

    重启docker

    systemctlrestartdocker

    输入docker版本返回的版本信息,安装就正常了。

    安装JDK

    yum-yinstalljava-1.8.0-openjdk*

    配置环境变量。打开vim/etc/profile添加内容。

    exportJAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64 exportPATH=$PATH:$JAVA_HOME/bin

    修改后,使其生效。

    source/etc/profile

    输入java-version返回的版本信息,安装正常。

    安装MAVEN

    下载:http://mirrors.Shu.edu.cn/Apache/maven/maven-3/3.5.2/binaries/Apache-maven-3.5.2-bin.tar.gz

    ##解压 tarvxfapache-maven-3.5.2-bin.tar.gz ##移动 mvapache-maven-3.5.2/usr/local/maven3

    修改环境变量,并将以下行添加到/etc/profile中

    MAVEN_HOME=/usr/local/maven3 exportMAVEN_HOME exportPATH=${PATH}:${MAVEN_HOME}/bin

    记住执行source/etc/profile以使环境变量生效。

    输入mvn-version返回版本信息,安装正常。

    这就完成了整个构建环境的配置。

    使用Docker
    部署SpringBoot项目

    将项目spring-boot-docker复制到服务器,输入项目路径进行打包测试。

    #打包 mvnpackage #启动 java-jartarget/spring-boot-docker-1.0.jar

    看到SpringBoot的启动日志后,显示环境配置没有问题。接下来,我们使用DockerFile来构建图像。

    mvnpackagedocker:build

    第一次构建可能有点慢。当您看到以下内容时,表示构建成功:

    ... Step1:FROMopenjdk:8-jdk-alpine --->224765a6bdbe Step2:VOLUME/tmp --->Usingcache --->b4e86cc8654e Step3:ADDspring-boot-docker-1.0.jarapp.jar --->a20fe75963ab Removingintermediatecontainer593ee5e1ea51 Step4:ENTRYPOINTjava-Djava.security.egd=file:/dev/./urandom-jar/app.jar --->Runningin85d558a10cd4 --->7102f08b5e95 Removingintermediatecontainer85d558a10cd4 Successfullybuilt7102f08b5e95 [INFO]Builtspringboot/spring-boot-docker [INFO]------------------------------------------------------------------------ [INFO]BUILDSUCCESS [INFO]------------------------------------------------------------------------ [INFO]Totaltime:54.346s [INFO]Finishedat:2018-03-13T16:20:15+08:00 [INFO]FinalMemory:42M/182M [INFO]------------------------------------------------------------------------

    使用dockerimages命令查看构建的图像:

    dockerimages REPOSITORYTAGIMAGEIDCREATEDSIZE springboot/spring-boot-dockerlatest99ce9468da746secondsago117.5MB

    Springboot/spring-boot-docker是我们已经构建好的映像,下一步就是运行映像。

    dockerrun-p8080:8080-tspringboot/spring-boot-docker

    启动后,我们使用dockerps查看运行映像:

    dockerps CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 049570da86a9springboot/spring-boot-docker"java-Djava.security"30secondsagoUp27seconds0.0.0.0:8080->8080/tcpdetermined_mahavira

    可以看到我们构建的容器正在运行,访问浏览器:http://192.168.0.x:8080/,返回

    HelloDocker!

    说明用Docker部署SpringBoot项目是成功的!

    代码:https://github.com/ityouknow/spring-boot-examples

    这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

    欢迎分享,转载请注明来源:内存溢出

    原文地址: http://outofmemory.cn/zz/774661.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-05-03
    下一篇 2022-05-03

    发表评论

    登录后才能评论

    评论列表(0条)

    保存