如何将SpringBoot应用跑在Docker容器中

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

成都创新互联公司专注于企业成都全网营销、网站重做改版、三亚网站定制设计、自适应品牌网站建设、H5建站商城建设、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为三亚等各大城市提供网站开发制作服务。

项目搭建

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

这里写一个简单的接口:

 
 
 
  1. @RestController
  2. @SpringBootApplication
  3. public class DemoApplication {
  4.  
  5.     @GetMapping("/hello")
  6.     public String hello() {
  7.         return "Hello World";
  8.     }
  9.  
  10.     public static void main(String[] args) {
  11.         SpringApplication.run(DemoApplication.class, args);
  12.     }
  13. }

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

 
 
 
  1. mvn clean package -Dmaven.test.skip=true 
  2. java -jar target/demo-0.0.1-SNAPSHOT.jar

容器化

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

创建Dockerfile文件

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

 
 
 
  1. From java:8
  2.  
  3.  
  4. VOLUME /tmp
  5.  
  6. #将打包好后的Jar文件放到image中
  7. Add target/demo-0.0.1-SNAPSHOT.jar app.jar
  8. # change file access and modification times
  9. RUN bash -c 'touch /app.jar'
  10.  
  11. EXPOSE 8080
  12. #容器启动的时候运行Jar文件
  13. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

构建镜像

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

 
 
 
  1. docker build -t demo8 .

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

 
 
 
  1. Sending build context to Docker daemon 14.84MB
  2. Step 1/6 : FROM java:8
  3.  ---> d23bdf5b1b1b
  4. Step 2/6 : VOLUME /tmp
  5.  ---> Using cache
  6.  ---> 91086d8b7c77
  7. Step 3/6 : ADD target/demo-0.0.1-SNAPSHOT.jar app.jar
  8.  ---> d161bed06e8b
  9. Step 4/6 : RUN bash -c 'touch /app.jar'
  10.  ---> Running in 9fbaff628989
  11.  ---> 1fc0498bbb06
  12. Removing intermediate container 9fbaff628989
  13. Step 5/6 : EXPOSE 8080
  14.  ---> Running in a5c44244b267
  15.  ---> 3b5150c5bdd0
  16. Removing intermediate container a5c44244b267
  17. Step 6/6 : ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar /app.jar
  18.  ---> Running in b7a3baac9d47
  19.  ---> 23ef7cc5e1b0
  20. Removing intermediate container b7a3baac9d47
  21. Successfully built 23ef7cc5e1b0
  22. Successfully tagged demo8:latest

运行镜像

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

 
 
 
  1. docker run -d -p 4000:8080 demo8

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

 
 
 
  1. ± % curl localhost:4000/hello 
  2. Hello World%

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

 
 
 
  1. ± % docker ps !10172
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 5f1b7f29a0b6 988ed6f466b5 "java -Djava.secur..." 29 minutes ago Up 29 minutes 0.0.0.0:4000->8080/tcp practical_jones
  4. ± % docker exec -it 5f1b7f29a0b6 /bin/bash 
  5. root@5f1b7f29a0b6:/ curl localhost:8080/hello
  6. Hello World

总结

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

本文名称:如何将SpringBoot应用跑在Docker容器中
标题链接:http://www.mswzjz.cn/qtweb/news0/31250.html

攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能