您好,登錄后才能下訂單哦!
日常的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一起使用,正如本文演示的一樣非常簡單。
點擊獲取?附送學習進階架構資料、PDF書籍文檔、面試資料
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。