摘要:市長信箱郵件查詢服務(wù)將應(yīng)用部署到在上一章我完成了將部署到的工作和都具有能快速啟動的特性因此是一對用來部署微服務(wù)的黃金搭檔在計劃中基于的應(yīng)用也將部署到之上那我們就開始行動吧將部署到上需要執(zhí)行以下步驟保證打包后的可執(zhí)行能正常啟動在應(yīng)用中編寫鏡像
市長信箱郵件查詢服務(wù): 將SpringBoot應(yīng)用部署到Docker
在上一章, 我完成了將ES部署到Docker的工作. SpringBoot和Docker都具有能快速啟動的特性, 因此SpringBoot+Docker是一對用來部署微服務(wù)的黃金搭檔. 在計劃中, 基于SpringBoot的web應(yīng)用也將部署到Docker之上, 那我們就開始行動吧.
將SpringBoot部署到Docker上,需要執(zhí)行以下步驟:
保證SpringBoot打包后的可執(zhí)行jar/war能正常啟動
在SpringBoot應(yīng)用中編寫Dockerfile鏡像的生成規(guī)則和啟動規(guī)則,并部署鏡像
在Docker中啟動SpringBoot應(yīng)用
保證SpringBoot打包后的可執(zhí)行jar/war能正常啟動我的crawler-search-web工程默認(rèn)打包出來的war文件, 直接使用java -jar的命令來啟動的話會報錯. 因為war包還不是一個可執(zhí)行jar/war. 要讓SpringBoot工程打出的包成為一個可執(zhí)行jar/war,需要使用spring-boot-maven-plugin插件, 對包的內(nèi)容進行修改,才能成為可執(zhí)行的jar.要使用此插件, 只需在pom.xml添加以下內(nèi)容:
org.springframework.boot spring-boot-maven-plugin
驗證SpringBoot能作為可執(zhí)行jar正常啟動:
mvn clean install java -jar target/crawler-search-web-1.0-SNAPSHOT.war
執(zhí)行java -jar命令后, 如果控制臺沒有異常, 那說明新打的war包可以作為一個可執(zhí)行war部署到docker了.
異常情況多模塊的SpringBoot無法啟動,提示"No qualifying bean of type ..."
可能是SpringBoot的bug(版本1.3.5): 通過自動掃描方式構(gòu)建的bean, 如果沒有處于啟動類所在的包下面, 會無法構(gòu)建.
比如我的服務(wù)類:MailService 所在的包:org.ybak.crawler.persistence.service 就沒有在啟動類WebApplication所在的包:org.ybak.crawler.web 下面, 啟動時就會報錯.
解決辦法是將WebApplication移動到org.ybak.crawler包下面.
這里使用docker-maven-plugin來進行鏡像的生成規(guī)則和啟動規(guī)則的設(shè)置,并通過這個插件將鏡像部署到本地.docker-maven-plugin的配置如下:
com.spotify docker-maven-plugin 0.4.10 ${docker.image.prefix}/${project.artifactId} frolvlad/alpine-oraclejdk8:slim sh -c "touch /${project.build.finalName}.war" ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/${project.build.finalName}.war"] / ${project.build.directory} ${project.build.finalName}.war
參數(shù)說明:
imageName: 生成的Docker鏡像名稱
baseImage: 同Dockerfile的FROM參數(shù)
cmd: 同Dockerfile的RUN參數(shù)
entryPoint: 同Dockerfile的ENTRYPOINT參數(shù)
resources: 生成docker鏡像的資源文件
docker-maven-plugin也支持引入Dockerfile的方式進行鏡像配置.這樣的方式配置靈活性更高.具體方式可以參見官方文檔.
配置完后, 執(zhí)行:
mvn package docker:build
即可部署鏡像.
在Docker中啟動SpringBoot應(yīng)用部署完鏡像后,執(zhí)行以下命令即可啟動應(yīng)用:
docker run -p 8080:8080 -t ybak/crawler-search-web
參數(shù)說明:
-p: 端口映射, 同ES在Docker中部署一樣, SpringBoot應(yīng)用在Docker中部署后,我們也不能直接訪問到服務(wù), 需要做Docker容器端口映射到Docker宿主機上的端口
-t: 模擬一個tty窗口, 可中斷程序執(zhí)行
執(zhí)行完后, 可以看到SpringBoot的啟動日志, 任務(wù)完成.
參考:
https://spring.io/guides/gs/spring-boot-docker/
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/26593.html
摘要:集成上服務(wù)在我的應(yīng)用中希望能使用一些的特性比如這樣的數(shù)據(jù)結(jié)構(gòu)如果能方便的在開發(fā)環(huán)境中使用起來就好了如何集成呢這里依然使用和來幫忙通過使用我們就能快速的部署好服務(wù)而通過使用我們能快速的把集成進我們的服務(wù)并能使用提供的模板方法方便的調(diào)用的使用快 SpringBoot集成Docker上Redis服務(wù) 在我的應(yīng)用中, 希望能使用一些redis的特性:比如zset這樣的數(shù)據(jù)結(jié)構(gòu),如果能方便的在開...
摘要:市長信箱郵件查詢服務(wù)使用構(gòu)建工程一直想用做個微服務(wù)練練手為后續(xù)部署到打下基礎(chǔ)今天比較空閑就開始把部分想法落地了概覽用來練手的應(yīng)用是一個市長信箱的內(nèi)容抓取與檢索頁面鑒于我的八卦特質(zhì)總想了解下周邊的一些投訴信息而成都的市長信箱是一個絕好的信息來 市長信箱郵件查詢服務(wù): 使用SpringBoot構(gòu)建工程 一直想用SpringBoot做個微服務(wù),練練手, 為后續(xù)部署到docker打下基礎(chǔ). 今...
摘要:市長信箱郵件查詢服務(wù)在上安裝作為一個服務(wù)在上一章我完成了替換的工作按照之前的計劃現(xiàn)在是該把遷移到的時候了為什么要遷移到為后續(xù)展示的彈性做準(zhǔn)備使用可以方便的部署多節(jié)點很火我開發(fā)機是要在上使用需要安裝的原理就是在上安裝一臺虛擬機作為容器的宿 市長信箱郵件查詢服務(wù): 在Docker上安裝Elasticsearch作為一個服務(wù) 在上一章,我完成了Elasticsearch替換Mysql的工作....
閱讀 3461·2019-08-30 13:15
閱讀 1400·2019-08-29 18:34
閱讀 822·2019-08-29 15:18
閱讀 3480·2019-08-29 11:21
閱讀 3247·2019-08-29 10:55
閱讀 3688·2019-08-26 10:36
閱讀 1869·2019-08-23 18:37
閱讀 1816·2019-08-23 16:57