本文主要介绍用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添加到映像中,并简单解释一下:
这样,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
配置环境变量。打开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.5MBSpringboot/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
这就是本文的全部内容。希望对大家的学习有帮助,支持我们。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)