| 
                        副标题[/!--empirenews.page--]
                         日常的Rest服务开发我都会首选SpringBoot,因为它本身的易用性以及自带的各种方便功能、生态等,今天就简单讲一下如何将Spring  Boot应用跑在Docker容器中 
  
项目搭建 
首先打开Idea,选择初始化一个Spring Boot应用,然后一路回车下去,待Idea下载完依赖,开始编码 
  
这里写一个简单的接口: 
- @RestController 
 - @SpringBootApplication 
 - public class DemoApplication { 
 -   
 -     @GetMapping("/hello") 
 -     public String hello() { 
 -         return "Hello World"; 
 -     } 
 -     public static void main(String[] args) { 
 -         SpringApplication.run(DemoApplication.class, args); 
 -     } 
 - } 
 
  
然后运行下面的命令验证服务是否正常: 
- mvn clean package -Dmaven.test.skip=true  
 - java -jar target/demo-0.0.1-SNAPSHOT.jar 
 
  
容器化 
下面我们就开始容器化这个简单的Spring Boot应用 
创建Dockerfile文件 
首先在项目的根目录创建一个Dockerfile文件,主要不要搞成驼峰命名: 
- 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的去做: 
- docker build -t demo8 . 
 
  
如果看到下面的输出说明执行成功了: 
- 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 
 
  
运行镜像 
到这一步构建完成后,我们就顺利的开始运行: 
- docker run -d -p 4000:8080 demo8 
 
  
然后curl一下刚才的接口看看是否正常: 
- ± % curl localhost:4000/hello  
 - Hello World% 
 
  
我们看到这里是将4000端口映射到了容器中的8080端口,我们进入容器看一下验证一下: 
- ± % 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一起使用,正如本文演示的一样非常简单。 
                                                (编辑:52站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |