首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将Spring Boot应用跑在Docker容器中

日常的Rest服务开发我都会首选SpringBoot,因为它本身的易用性以及自带的各种方便功能、生态等,今天就简单讲一下如何将Spring Boot应用跑在Docker容器中

项目搭建

首先打开Idea,选择初始化一个Spring Boot应用,然后一路回车下去,待Idea下载完依赖,开始编码

这里写一个简单的接口:

代码语言:javascript
复制
@RestController?@SpringBootApplication?public?class?DemoApplication?{???????@GetMapping("/hello")?????public?String?hello()?{?????????return?"Hello?World";?????}???????public?static?void?main(String[]?args)?{?????????SpringApplication.run(DemoApplication.class,?args);?????}?}?

然后运行下面的命令验证服务是否正常:

代码语言:javascript
复制
mvn?clean?package?-Dmaven.test.skip=true??java?-jar?target/demo-0.0.1-SNAPSHOT.jar?

容器化

下面我们就开始容器化这个简单的Spring Boot应用

创建Dockerfile文件

首先在项目的根目录创建一个Dockerfile文件,主要不要搞成驼峰命名:

代码语言:javascript
复制
From?java:8?????VOLUME?/tmp???#将打包好后的Jar文件放到image中?Add?target/demo-0.0.1-SNAPSHOT.jar?app.jar?#?change?file?access?and?modification?times?RUN?bash?-c?'touch?/app.jar'???EXPOSE?8080?#容器启动的时候运行Jar文件?ENTRYPOINT?["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]?

构建镜像

接下来就去构建Docker镜像,不过通常这一步都会用Jenkins的去做:

代码语言:javascript
复制
docker?build?-t?demo8?.?

如果看到下面的输出说明执行成功了:

代码语言:javascript
复制
Sending?build?context?to?Docker?daemon?14.84MB?Step?1/6?:?FROM?java:8??--->?d23bdf5b1b1b?Step?2/6?:?VOLUME?/tmp??--->?Using?cache??--->?91086d8b7c77?Step?3/6?:?ADD?target/demo-0.0.1-SNAPSHOT.jar?app.jar??--->?d161bed06e8b?Step?4/6?:?RUN?bash?-c?'touch?/app.jar'??--->?Running?in?9fbaff628989??--->?1fc0498bbb06?Removing?intermediate?container?9fbaff628989?Step?5/6?:?EXPOSE?8080??--->?Running?in?a5c44244b267??--->?3b5150c5bdd0?Removing?intermediate?container?a5c44244b267?Step?6/6?:?ENTRYPOINT?java?-Djava.security.egd=file:/dev/./urandom?-jar?/app.jar??--->?Running?in?b7a3baac9d47??--->?23ef7cc5e1b0?Removing?intermediate?container?b7a3baac9d47?Successfully?built?23ef7cc5e1b0?Successfully?tagged?demo8:latest?

运行镜像

到这一步构建完成后,我们就顺利的开始运行:

代码语言:javascript
复制
docker?run?-d?-p?4000:8080?demo8?

然后curl一下刚才的接口看看是否正常:

代码语言:javascript
复制
±?%?curl?localhost:4000/hello??Hello?World%?

我们看到这里是将4000端口映射到了容器中的8080端口,我们进入容器看一下验证一下:

代码语言:javascript
复制
±?%?docker?ps?!10172?CONTAINER?ID?IMAGE?COMMAND?CREATED?STATUS?PORTS?NAMES?5f1b7f29a0b6?988ed6f466b5?"java?-Djava.secur..."?29?minutes?ago?Up?29?minutes?0.0.0.0:4000->8080/tcp?practical_jones?±?%?docker?exec?-it?5f1b7f29a0b6?/bin/bash??root@5f1b7f29a0b6:/?curl?localhost:8080/hello?Hello?World?

总结

SpringBoot打包后直接生成一个可执行的JAR包,天然就非常适合搭配Docker一起使用,正如本文演示的一样非常简单。

  • 发表于:
  • 原文链接http://news.51cto.com/art/201907/599604.htm
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券
http://www.vxiaotou.com