如何将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 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端口,我们进入容器看一下验证一下:
相关推荐
与卿画眉共浮生 2020-11-13
CaesarHome 2020-11-09
瑞风轻拂 2020-11-02
hellowordmonkey 2020-11-02
丽丽 2020-10-30
流年浅滩 2020-10-23
feinifi 2020-10-14
yangjinpingc 2020-10-09
RickyIT 2020-09-27
lisongchuang 2020-09-27
permanent00 2020-09-15
李玉志 2020-08-19
spring 2020-08-18
meleto 2020-08-17
幸运小侯子 2020-08-14
85407718 2020-08-09
csuzxm000 2020-08-02
咻pur慢 2020-08-02
libowenhit 2020-07-29