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