SpringCloud系列spring Cloud 第十一篇:docker部署spring cloud項目

      網友投稿 1028 2022-05-30

      一、docker簡介

      Docker是一個開源的引擎,可以輕松的為任何應用創建一個輕量級的、可移植的、自給自足的容器。開發者在筆記本上編譯測試通過的容器可以批量地在生產環境中部署,包括VMs(虛擬機)、bare metal、OpenStack?集群和其他的基礎應用平臺。

      Docker通常用于如下場景:

      SpringCloud系列:Spring Cloud 第十一篇:docker部署spring cloud項目

      ·??????web應用的自動化打包和發布;

      ·??????自動化測試和持續集成、發布;

      ·??????在服務型環境中部署和調整數據庫或其他的后臺應用;

      ·??????從頭編譯或者擴展現有的OpenShift或Cloud Foundry平臺來搭建自己的PaaS環境。

      Docker?的優點

      ·??????1、簡化程序:

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

      ·??????2、避免選擇恐懼癥:

      如果你有選擇恐懼癥,還是資深患者。Docker?幫你? ?打包你的糾結!比如Docker?鏡像;Docker?鏡像中包含了運行環境和配置,所以Docker?可以簡化部署多種應用實例工作。比如Web?應用、后臺應用、數據庫應用、大數據應用比如Hadoop?集群、消息隊列等等都可以打包成一個鏡像部署。

      ·??????3、節省開支:

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

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

      二、準備工作

      環境條件:

      ·??????linux系統,不建議windows

      ·??????docker最新版本

      ·??????jdk 1.8

      ·??????maven3.0

      本文采用的工程來自第一篇文章的工程,采用maven的方式去構建項目,并采用docker-maven-plugin去構建docker鏡像。

      三、改造工程、構建鏡像

      在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插件方式構建docker鏡像的。

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

      ·??????dockerDirectory指定Dockerfile?的位置

      ·??????resources是指那些需要和Dockerfile?放在一起,在構建鏡像時使用的文件,一般應用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其他指令的前面,指定的基礎image可以是官方遠程倉庫中的,也可以位于本地倉庫。后續的指令都依賴于該指令指定的image。當在同一個Dockerfile中建立多個鏡像時,可以使用多個FROM指令。

      ·??????VOLUME

      格式為:

      VOLUME?["/data"]

      使容器中的一個目錄具有持久化存儲數據的功能,該目錄可以被容器本身使用,也可以共享給其他容器。當容器中的應用有持久化數據的需求時可以在Dockerfile中使用該指令。

      ·??????ADD

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

      ·??????ENTRYPOINT

      指定Docker容器啟動時執行的命令,可以多次設置,但是只有最后一個有效。

      ·??????EXPOSE

      為Docker容器設置對外的端口號。在啟動時,可以使用-p選項或者-P選項。

      執行構建docker鏡像maven命令:

      mvn?clean

      mvn?package?docker:build

      構建eureka-server鏡像成功。

      ·??????pom文件導入同eurek-server

      ·??????修改下配置文件:

      eureka:

      client:

      serviceUrl:

      defaultZone:?http://eureka-server:8761/eureka/?#?這個需要改為eureka-server

      server:

      port:?8763

      spring:

      application:

      name:?service-hi

      在這里說下:defaultZone發現服務的host改為鏡像名。

      ·??????dockefile?編寫同eureka-server

      ·??????構建鏡像:

      mvn?clean

      mvn?package?docker:build

      這時我們運行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啟動鏡像

      Compose?是一個用于定義和運行多容器的Docker應用的工具。使用Compose,你可以在一個配置文件(yaml格式)中配置你應用的服務,然后使用一個命令,即可創建并啟動配置中引用的所有服務。下面我們進入Compose的實戰吧。

      采用docker-compose的方式編排鏡像,啟動鏡像:

      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

      發現2個鏡像按照指定的順序啟動了。

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

      五、采用docker-compose編排并啟動鏡像

      docker-compose也可以構建鏡像,現在我們采用docker-compose的方式構建鏡像。

      現在以eureka-server為例:

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

      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目錄;

      編寫構建鏡像docker-compose-dev文件:

      version:?'3'

      services:

      eureka-server:

      build:?eureka-server

      ports:

      -?8761:8761

      service-hi:

      build:?service-hi

      ports:

      -?8763:8763

      命令構建鏡像并啟動:

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

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

      方志朋簡介:SpringCloud中國社區聯合創始人,博客訪問量突破一千萬,愛好開源,熱愛分享,活躍于各大社區,保持著非常強的學習驅動力,終身學習踐行者,終身學習受益者。目前就職于國內某家知名互聯網保險公司,擔任DEVOPS工程師,對微服務領域和持續集成領域研究較深,精通微服務框架SpringCloud

      Spring 容器 Spring Cloud Docker

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:【精選單品】科技興國 | 勞動密集型向信息化、自動化轉型,傳統紡織業的顛覆之路
      下一篇:華東師范大學與華為啟動GaussDB數據庫創新合作
      相關文章
      99人中文字幕亚洲区| 亚洲视频日韩视频| 亚洲午夜成人精品无码色欲| 亚洲福利视频网址| 亚洲电影在线免费观看| 亚洲成人免费电影| 亚洲明星合成图综合区在线| 亚洲视频免费在线看| 亚洲自偷精品视频自拍| 亚洲成a人不卡在线观看| 亚洲乱码一二三四区国产| 亚洲欧洲国产经精品香蕉网| 亚洲一级毛片免费看| 亚洲宅男精品一区在线观看| 激情综合亚洲色婷婷五月APP| 久久久久se色偷偷亚洲精品av | 久久亚洲国产成人精品无码区| 亚洲中文字幕视频国产| 色久悠悠婷婷综合在线亚洲| 国产午夜亚洲精品午夜鲁丝片| 国产精品亚洲片在线观看不卡| 国产亚洲一区二区三区在线观看| 无码乱人伦一区二区亚洲一 | 国产综合成人亚洲区| 亚洲AⅤ永久无码精品AA| 亚洲一级片免费看| 国产亚洲精品自在久久| 亚洲v高清理论电影| 亚洲成人动漫在线观看| 亚洲熟妇无码八V在线播放| 国产精品无码亚洲精品2021| 亚洲国产婷婷香蕉久久久久久| 自拍偷自拍亚洲精品情侣| 久久精品亚洲一区二区| 亚洲毛片基地日韩毛片基地| 国产精品亚洲综合久久| 日韩精品成人亚洲专区| 亚洲人成网77777亚洲色| 91情国产l精品国产亚洲区 | 亚洲人色大成年网站在线观看| 亚洲一线产品二线产品|