域名

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

时间:2010-12-5 17:23:32  作者:数据库   来源:域名  查看:  评论:0
内容摘要:日常的Rest服务开发我都会首选SpringBoot,因为它本身的易用性以及自带的各种方便功能、生态等,今天就简单讲一下如何将Spring Boot应用跑在Docker容器中项目搭建首先打开Idea,

 日常的应用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);     } } 

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

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一起使用,应用正如本文演示的器中一样非常简单。

应用网站模板
copyright © 2025 powered by 益强资讯全景  滇ICP备2023006006号-31sitemap