当前位置: 首页 > 科技观察

如何在Docker容器中运行SpringBoot应用_0

时间:2023-03-14 16:36:46 科技观察

日常Rest服务开发我会选择SpringBoot,因为它的易用性以及各种便捷的功能和生态等等,今天简单说一下如何使用SpringBoot应用程序运行在Docker容器中。项目构建,首先打开Idea,选择初始化一个SpringBoot应用,然后一路回车。Idea下载依赖后,开始编码。在这里写一个简单的接口:@RestController@SpringBootApplicationpublicclassDemoApplication{@GetMapping("/hello")publicStringhello(){return"HelloWorld";}publicstaticvoidmain(String[]args){SpringApplication.run(DemoApplication.class,args);}然后运行以下命令来验证服务是否正常:mvncleanpackage-Dmaven.test.skip=truejava-jartarget/demo-0.0.1-SNAPSHOT.jar容器化让我们开始容器化这个简单的SpringBoot应用程序,先创建一个Dockerfile创建项目根目录下一个Dockerfile文件,主要是不要驼峰命名:fromjava:8VOLUME/tmp#将打包好的Jar文件放在镜像中Addtarget/demo-0.0.1-SNAPSHOT.jarapp.jar#changefileaccessandmodificationtimesRUNbash-c'touch/app.jar'EXPOSE8080#运行容器启动时的Jar文件ENTRYPOINT["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]构建镜像接下来,构建Docker镜像,但通常这一步将使用Jenkins完成:dockerbuild-tdemo8。如果看到如下输出,则执行成功:SendingbuildcontexttoDockerdaemon14.84MBStep1/6:FROMjava:8--->d23bdf5b1b1bStep2/6:VOLUME/tmp--->Usingcache--->91086d8b7c77Step3/6:ADDtarget/demo-0.0.1-SNAPSHOT.jarapp.jar--->d161bed06e8bStep4/6:RUNbash-c'touch/app.jar'--->Runningin9fbaff628989--->1fc0498bbb06Removingintermediatecontainer9fbaff628989Step5/6:EXPOSE8080--->Runningina5c44244b267--->3b5150c5bdd0Removingintermediatecontainera5c44244b267Step6/6:ENTRYPOINTjava-Djava.security.egd=file:/dev/./urandom-jar/app.jar--->Runninginb7a3baac9d47--->23ef7cc5e1b0Removingintermediatecontainerb7a3baac9d47Successfullybuilt23ef7cc5e1b0Successfullytaggeddemo8:latestRunimage到这一步构建完成后开始顺利运行:docker0run00然后curlthe:808刚才的界面看看是否正常:±%curllocalhost:4000/helloHelloWorld%我们看到容器中4000端口映射到8080端口,我们进入容器查看验证:±%dockerps!10172CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES5f1b7f29a0b6988ed6f466b5"java-Djava.secur..."29minutesagoUp29minutes0.0.0.0:4000->8080/tcppractical_jones±%dockerexec-it5f1b7f29a0b6/bin/bashroot@5f1b7f29a0b6:/curllocalhost:8080/helloHelloWorld总结SpringBoot打包后直接生成一个可执行的JAR包,自然非常适合与Docker一起使用,如本文所示如图所示非常简单