詳解如何將Spring Boot應(yīng)用跑在Docker容器中
日常的Rest服務(wù)開發(fā)我都會(huì)首選SpringBoot,因?yàn)樗旧淼囊子眯砸约白詭У母鞣N方便功能、生態(tài)等,今天就簡(jiǎn)單講一下如何將Spring Boot應(yīng)用跑在Docker容器中
項(xiàng)目搭建
首先打開Idea,選擇初始化一個(gè)Spring Boot應(yīng)用,然后一路回車下去,待Idea下載完依賴,開始編碼
這里寫一個(gè)簡(jiǎn)單的接口:
@RestController @SpringBootApplication public class DemoApplication { @GetMapping("/hello") public String hello() { return "Hello World"; } public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
然后運(yùn)行下面的命令驗(yàn)證服務(wù)是否正常:
mvn clean package -Dmaven.test.skip=true java -jar target/demo-0.0.1-SNAPSHOT.jar
容器化
下面我們就開始容器化這個(gè)簡(jiǎn)單的Spring Boot應(yīng)用
創(chuàng)建Dockerfile文件
首先在項(xiàng)目的根目錄創(chuàng)建一個(gè)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 #容器啟動(dòng)的時(shí)候運(yùn)行Jar文件 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
構(gòu)建鏡像
接下來(lái)就去構(gòu)建Docker鏡像,不過(guò)通常這一步都會(huì)用Jenkins的去做:
docker build -t demo8 .
如果看到下面的輸出說(shuō)明執(zhí)行成功了:
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
運(yùn)行鏡像
到這一步構(gòu)建完成后,我們就順利的開始運(yùn)行:
docker run -d -p 4000:8080 demo8
然后curl一下剛才的接口看看是否正常:
± % curl localhost:4000/hello Hello World%
我們看到這里是將4000端口映射到了容器中的8080端口,我們進(jìn)入容器看一下驗(yàn)證一下:
± % 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
總結(jié)
SpringBoot打包后直接生成一個(gè)可執(zhí)行的JAR包,天然就非常適合搭配Docker一起使用,正如本文演示的一樣非常簡(jiǎn)單。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 使用Docker部署Spring Boot的應(yīng)用示例
- 使用Docker部署 spring-boot maven應(yīng)用的方法
- Docker部署SpringBoot應(yīng)用的實(shí)現(xiàn)步驟
- 詳解在Docker容器中運(yùn)行Spring Boot應(yīng)用
- Spring Boot應(yīng)用發(fā)布到Docker的實(shí)現(xiàn)
- Docker容器化spring boot應(yīng)用詳解
- 將spring boot應(yīng)用打入docker中運(yùn)行的實(shí)現(xiàn)方法
- Spring Boot應(yīng)用Docker化的步驟詳解
- Docker化Spring Boot應(yīng)用的實(shí)踐
相關(guān)文章
詳解Spring Cloud中Hystrix的請(qǐng)求合并
這篇文章主要介紹了詳解Spring Cloud中Hystrix的請(qǐng)求合并,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05Java8中Optional類型和Kotlin中可空類型的使用對(duì)比
這篇文章主要給大家介紹了關(guān)于Java8中Optional類型和Kotlin中可空類型的使用對(duì)比,文中通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09java 使用線程監(jiān)控文件目錄變化的實(shí)現(xiàn)方法
這篇文章主要介紹了java 使用線程監(jiān)控文件目錄變化的實(shí)現(xiàn)方法的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下2017-10-10SpringCloud Sleuth實(shí)現(xiàn)分布式請(qǐng)求鏈路跟蹤流程詳解
這篇文章主要介紹了SpringCloud Sleuth實(shí)現(xiàn)分布式請(qǐng)求鏈路跟蹤流程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-11-11SpringMVC?RESTFul及REST架構(gòu)風(fēng)格介紹
這篇文章主要為大家介紹了SpringMVC?RESTFul及REST架構(gòu)風(fēng)格介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Java中使用DOM4J生成xml文件并解析xml文件的操作
這篇文章主要介紹了Java中使用DOM4J來(lái)生成xml文件和解析xml文件的操作,今天通過(guò)代碼給大家展示了解析xml文件和生成xml文件的方法,需要的朋友可以參考下2021-09-09springboot的緩存技術(shù)的實(shí)現(xiàn)
這篇文章主要介紹了springboot的緩存技術(shù)的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05