spring Cloud 第十一篇:docker部署spring cloud項(xiàng)目

      網(wǎng)友投稿 1488 2022-05-30

      一、docker簡(jiǎn)介

      Docker是一個(gè)開源的引擎,可以輕松的為任何應(yīng)用創(chuàng)建一個(gè)輕量級(jí)的、可移植的、自給自足的容器。開發(fā)者在筆記本上編譯測(cè)試通過的容器可以批量地在生產(chǎn)環(huán)境中部署,包括VMs(虛擬機(jī))、bare metal、OpenStack 集群和其他的基礎(chǔ)應(yīng)用平臺(tái)。

      Docker通常用于如下場(chǎng)景:

      web應(yīng)用的自動(dòng)化打包和發(fā)布;

      自動(dòng)化測(cè)試和持續(xù)集成、發(fā)布;

      在服務(wù)型環(huán)境中部署和調(diào)整數(shù)據(jù)庫或其他的后臺(tái)應(yīng)用;

      從頭編譯或者擴(kuò)展現(xiàn)有的OpenShift或Cloud Foundry平臺(tái)來搭建自己的PaaS環(huán)境。

      Docker 的優(yōu)點(diǎn)

      1、簡(jiǎn)化程序:

      Docker 讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,便可以實(shí)現(xiàn)虛擬化。Docker改變了虛擬化的方式,使開發(fā)者可以直接將自己的成果放入Docker中進(jìn)行管理。方便快捷已經(jīng)是 Docker的最大優(yōu)勢(shì),過去需要用數(shù)天乃至數(shù)周的 ? ?任務(wù),在Docker容器的處理下,只需要數(shù)秒就能完成。

      2、避免選擇恐懼癥:

      如果你有選擇恐懼癥,還是資深患者。Docker 幫你 ? ?打包你的糾結(jié)!比如 Docker 鏡像;Docker 鏡像中包含了運(yùn)行環(huán)境和配置,所以 Docker 可以簡(jiǎn)化部署多種應(yīng)用實(shí)例工作。比如 Web 應(yīng)用、后臺(tái)應(yīng)用、數(shù)據(jù)庫應(yīng)用、大數(shù)據(jù)應(yīng)用比如 Hadoop 集群、消息隊(duì)列等等都可以打包成一個(gè)鏡像部署。

      3、節(jié)省開支:

      一方面,云計(jì)算時(shí)代到來,使開發(fā)者不必為了追求效果而配置高額的硬件,Docker 改變了高性能必然高價(jià)格的思維定勢(shì)。Docker 與云的結(jié)合,讓云空間得到更充分的利用。不僅解決了硬件管理的問題,也改變了虛擬化的方式。

      上面文字參考了相關(guān)文章;另,關(guān)于docker 的安裝和基本的使用見相關(guān)教程。

      二、準(zhǔn)備工作

      環(huán)境條件:

      linux系統(tǒng),不建議windows

      docker最新版本

      jdk 1.8

      maven3.0

      本文采用的工程來自第一篇文章的工程,采用maven的方式去構(gòu)建項(xiàng)目,并采用docker-maven-plugin去構(gòu)建docker鏡像。

      三、改造工程、構(gòu)建鏡像

      在pom文件加上插件:

      ???????? ???????????? ????????????????org.springframework.boot ????????????????spring-boot-maven-plugin ???????????? ???????????? ???????????? ????????????????com.spotify ????????????????docker-maven-plugin ????????????????0.4.3 ???????????????? ????????????????????${docker.image.prefix}/${project.artifactId} ????????????????????src/main/docker ???????????????????? ???????????????????????? ????????????????????????????/ ????????????????????????????${project.build.directory} ????????????????????????????${project.build.finalName}.jar ???????????????????????? ???????????????????? ???????????????? ???????????? ???????????? ???????? ????

      Spotify 的 docker-maven-plugin 插件是用maven插件方式構(gòu)建docker鏡像的。

      imageName指定了鏡像的名字,本例為 forep/eureka-server

      dockerDirectory指定 Dockerfile 的位置

      resources是指那些需要和 Dockerfile 放在一起,在構(gòu)建鏡像時(shí)使用的文件,一般應(yīng)用 jar 包需要納入。

      修改下配置文件:

      server: ??port:?8761 eureka: ??instance: ????prefer-ip-address:?true ??client: ????registerWithEureka:?false ????fetchRegistry:?false

      FROM?frolvlad/alpine-oraclejdk8:slim VOLUME?/tmp ADD?eureka-server-0.0.1-SNAPSHOT.jar?app.jar #RUN?bash?-c?'touch?/app.jar' ENTRYPOINT?["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] EXPOSE?8761

      FROM

      FROM? ????FROM?: ????FROM??

      FROM指令必須指定且需要在Dockerfile其他指令的前面,指定的基礎(chǔ)image可以是官方遠(yuǎn)程倉庫中的,也可以位于本地倉庫。后續(xù)的指令都依賴于該指令指定的image。當(dāng)在同一個(gè)Dockerfile中建立多個(gè)鏡像時(shí),可以使用多個(gè)FROM指令。

      VOLUME

      格式為:

      VOLUME?["/data"]

      使容器中的一個(gè)目錄具有持久化存儲(chǔ)數(shù)據(jù)的功能,該目錄可以被容器本身使用,也可以共享給其他容器。當(dāng)容器中的應(yīng)用有持久化數(shù)據(jù)的需求時(shí)可以在Dockerfile中使用該指令。

      ADD

      從src目錄復(fù)制文件到容器的dest。其中src可以是Dockerfile所在目錄的相對(duì)路徑,也可以是一個(gè)URL,還可以是一個(gè)壓縮包

      ENTRYPOINT

      指定Docker容器啟動(dòng)時(shí)執(zhí)行的命令,可以多次設(shè)置,但是只有最后一個(gè)有效。

      EXPOSE

      為Docker容器設(shè)置對(duì)外的端口號(hào)。在啟動(dòng)時(shí),可以使用-p選項(xiàng)或者-P選項(xiàng)。

      執(zhí)行構(gòu)建docker鏡像maven命令:

      mvn?clean mvn?package?docker:build

      構(gòu)建eureka-server鏡像成功。

      pom文件導(dǎo)入同eurek-server

      修改下配置文件:

      eureka: ??client: ????serviceUrl: ??????defaultZone:?http://eureka-server:8761/eureka/?#?這個(gè)需要改為eureka-server server: ??port:?8763 spring: ??application: ????name:?service-hi

      在這里說下:defaultZone發(fā)現(xiàn)服務(wù)的host改為鏡像名。

      dockefile 編寫同eureka-server

      構(gòu)建鏡像:

      mvn?clean mvn?package?docker:build

      這時(shí)我們運(yùn)行docke的eureka-server 和service-hi鏡像:

      docker?run?-p?8761:?8761?-t?forezp/eureka-server docker?run?-p?8763:?8763?-t?forezp/service-hi

      訪問localhost:8761

      四、采用docker-compose啟動(dòng)鏡像

      Compose 是一個(gè)用于定義和運(yùn)行多容器的Docker應(yīng)用的工具。使用Compose,你可以在一個(gè)配置文件(yaml格式)中配置你應(yīng)用的服務(wù),然后使用一個(gè)命令,即可創(chuàng)建并啟動(dòng)配置中引用的所有服務(wù)。下面我們進(jìn)入Compose的實(shí)戰(zhàn)吧。

      采用docker-compose的方式編排鏡像,啟動(dòng)鏡像:

      version:?'3' services: ??eureka-server: ????image:?forezp/eureka-server ????restart:?always ????ports: ??????-?8761:8761 ??service-hi: ????image:?forezp/service-hi ????restart:?always ????ports: ??????-?8763:8763

      輸入命令: docker-compose up

      發(fā)現(xiàn)2個(gè)鏡像按照指定的順序啟動(dòng)了。

      源碼下載:https://github.com/forezp/SpringCloudLearning/tree/master/chapter11

      五、采用docker-compose編排并啟動(dòng)鏡像

      docker-compose也可以構(gòu)建鏡像,現(xiàn)在我們采用docker-compose的方式構(gòu)建鏡像。

      現(xiàn)在以eureka-server為例:

      將Dockerfile移到eureka-server的主目錄,改寫ADD的相對(duì)路徑:

      Spring Cloud 第十一篇:docker部署spring cloud項(xiàng)目

      FROM?frolvlad/alpine-oraclejdk8:slim VOLUME?/tmp ADD?./target/eureka-server-0.0.1-SNAPSHOT.jar?app.jar #RUN?bash?-c?'touch?/app.jar' ENTRYPOINT?["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] EXPOSE?8761

      同理修改service-hi目錄;

      編寫構(gòu)建鏡像docker-compose-dev文件:

      version:?'3' services: ??eureka-server: ????build:?eureka-server ????ports: ??????-?8761:8761 ??service-hi: ????build:?service-hi ????ports: ??????-?8763:8763

      命令構(gòu)建鏡像并啟動(dòng):

      docker-compose?-f?docker-compose.yml?-f?docker-compose-dev.yml?up

      源碼下載:https://github.com/forezp/SpringCloudLearning/tree/master/chapter11-2

      https://mp.weixin.qq.com/s?__biz=MzAxNjk4ODE4OQ==&mid=2247483895&idx=1&sn=ef32c35cbcd73d4c81eea3bece18508f&chksm=9bed2085ac9aa9937117d4a377ce8b758b8af2a4c6f9e614f344f2d854c36235940e06fe61ec&scene=21#wechat_redirect

      Docker 鏡像服務(wù) Spring Cloud Spring

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:華東師范大學(xué)與華為啟動(dòng)GaussDB數(shù)據(jù)庫創(chuàng)新合作
      下一篇:創(chuàng)新ICT促進(jìn)行業(yè)邁向云時(shí)代
      相關(guān)文章
      一本天堂ⅴ无码亚洲道久久| 麻豆亚洲AV永久无码精品久久| 亚洲国产精品无码久久久蜜芽| 亚洲乱妇老熟女爽到高潮的片 | 亚洲国产国产综合一区首页| 亚洲精品二区国产综合野狼 | 亚洲综合激情五月色一区| 亚洲乱码无限2021芒果| 91亚洲国产成人久久精品| 亚洲国产精品张柏芝在线观看 | 久久亚洲国产精品123区| 久久亚洲中文字幕精品一区四| 久久精品国产精品亚洲下载| 久久乐国产精品亚洲综合| 日本亚洲国产一区二区三区| 亚洲无人区一区二区三区| 亚洲精品无码av人在线观看| 亚洲爆乳精品无码一区二区三区 | 亚洲AV无码1区2区久久| 亚洲AV日韩精品久久久久久久| 久久久久亚洲AV片无码| 91亚洲国产成人精品下载| 91亚洲性爱在线视频| 国产成人亚洲综合一区| 亚洲av永久无码| 亚洲国产成人精品久久久国产成人一区二区三区综 | 亚洲av无码一区二区三区乱子伦 | 亚洲A∨无码一区二区三区| 亚洲欧洲日韩国产综合在线二区| 亚洲视频在线观看不卡| 亚洲六月丁香六月婷婷色伊人| 亚洲91精品麻豆国产系列在线| 国产精品久久亚洲不卡动漫 | 亚洲AV人无码激艳猛片| 中文字幕亚洲综合久久2| 精品亚洲成在人线AV无码| 亚洲妇女无套内射精| 亚洲AV无码不卡在线观看下载| 久久精品夜色噜噜亚洲A∨| 亚洲av无码精品网站| 亚洲成a人片毛片在线|