自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何將Spring Boot應(yīng)用跑在Docker容器中

新聞 前端
日常的Rest服務(wù)開發(fā)我都會首選SpringBoot,因為它本身的易用性以及自帶的各種方便功能、生態(tài)等,今天就簡單講一下如何將Spring Boot應(yīng)用跑在Docker容器中

 日常的Rest服務(wù)開發(fā)我都會首選SpringBoot,因為它本身的易用性以及自帶的各種方便功能、生態(tài)等,今天就簡單講一下如何將Spring Boot應(yīng)用跑在Docker容器中

項目搭建

首先打開Idea,選擇初始化一個Spring Boot應(yīng)用,然后一路回車下去,待Idea下載完依賴,開始編碼。

如何將Spring Boot應(yīng)用跑在Docker容器中

這里寫一個簡單的接口:

  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.     } 

然后運行下面的命令驗證服務(wù)是否正常:

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

容器化

下面我們就開始容器化這個簡單的Spring Boot應(yīng)用

創(chuàng)建Dockerfile文件

首先在項目的根目錄創(chuàng)建一個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"

構(gòu)建鏡像

接下來就去構(gòu)建Docker鏡像,不過通常這一步都會用Jenkins的去做:

  1. docker build -t demo8 . 

如果看到下面的輸出說明執(zhí)行成功了:

  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 

運行鏡像

到這一步構(gòu)建完成后,我們就順利的開始運行:

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

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

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

我們看到這里是將4000端口映射到了容器中的8080端口,我們進(jìn)入容器看一下驗證一下:

  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 

總結(jié)

SpringBoot打包后直接生成一個可執(zhí)行的JAR包,天然就非常適合搭配Docker一起使用,正如本文演示的一樣非常簡單。

 

責(zé)任編輯:張燕妮 來源: 頭條科技
相關(guān)推薦

2019-07-15 10:00:53

DockerJava容器

2023-10-25 18:08:13

應(yīng)用容器化Docker

2017-01-05 09:18:12

容器Docker

2024-09-30 11:51:07

2024-01-15 08:03:10

JVM內(nèi)存工作效率

2022-11-25 16:27:07

應(yīng)用開發(fā)鴻蒙

2020-03-19 10:44:19

DockerSpring Boo單層鏡像

2025-02-12 11:06:24

Go函數(shù)MultiBytes

2022-11-21 07:54:32

安全護欄應(yīng)用安全程序

2015-10-16 10:48:03

Gate One嵌入Web

2011-05-04 09:29:22

2021-12-29 16:40:54

Python語言字符串

2023-12-12 16:46:44

AI云團隊云管理

2019-08-26 08:00:55

Docker容器映像

2024-10-07 08:40:56

Spring應(yīng)用程序Java

2023-11-06 13:11:22

Docker映像Builkit

2022-11-03 10:28:43

Docker

2009-06-29 17:07:54

EJB部署Jboss

2024-09-05 09:35:58

CGLIBSpring動態(tài)代理

2023-10-15 22:40:25

插件JIB
點贊
收藏

51CTO技術(shù)棧公眾號