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

网友投稿 520 2023-01-02


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

日常的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 a5c44244SJmyyiJtb267

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:简单易懂的接口测试工具(接口在线测试工具)
下一篇:Java使用反射调用方法示例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~