版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 第9章-微服務(wù)容器部署與持續(xù)集成 學(xué)習(xí)目標(biāo): 理解Dockerfile的作用,能編寫簡(jiǎn)單的Dockerfile腳本完成鏡像的構(gòu)建完成Docker私有倉(cāng)庫(kù)的構(gòu)建,能夠運(yùn)用Maven插件完成鏡像的創(chuàng)建與上傳理解持續(xù)集成,說(shuō)出持續(xù)集成的作用 能夠完成Gogs 的安裝與配置,完成代碼的提交能夠使用Jenkins完成代碼的持續(xù)集成 1 Dockerfile1.1 什么是DockerfileDockerfile是由一系列命令和參數(shù)構(gòu)成的腳本,這些命令應(yīng)用于基礎(chǔ)鏡像并最終創(chuàng)建一個(gè)新的鏡像。 1、對(duì)于開發(fā)人員:可以為開發(fā)團(tuán)隊(duì)提供一個(gè)完全一致的開發(fā)環(huán)境; 2、對(duì)于測(cè)試人員:可以直接拿開發(fā)時(shí)所構(gòu)建的鏡像或者通過(guò)
2、Dockerfile文件構(gòu)建一個(gè)新的鏡像開始工作了; 3、對(duì)于運(yùn)維人員:在部署時(shí),可以實(shí)現(xiàn)應(yīng)用的無(wú)縫移植。 1.2 常用命令 北京市昌平區(qū)建材城西路金燕龍辦公樓一層 電話:400-618-9090 命令 作用 FROM image_name:tag定義了使用哪個(gè)基礎(chǔ)鏡像啟動(dòng)構(gòu)建流程 MAINTAINERuser_name 聲 像的創(chuàng)建者 ENV key value設(shè)置環(huán)境變量 (可以寫多條)RUN command是Dockerfile的核心部分(可以寫多條)ADD source_dir/file dest_dir/file將宿主機(jī)的文件復(fù)制到容器內(nèi),如果是一個(gè)壓縮文件, 將會(huì)在復(fù)制后自動(dòng)解壓
3、COPY source_dir/file dest_dir/file和ADD相似,但是如果有壓縮文件并不能解壓 WORKDIR path_dir設(shè)置工作目錄 EXPOSE port1prot2用來(lái)指定端口,使容器內(nèi)的應(yīng)用可以通過(guò)端口和外界交互 CMD argument在構(gòu)建容器時(shí)使用,會(huì)被docker run 后的argument覆蓋 ENTRYPOINTargument和CMD相似,但是并不會(huì)被docker run指定的參數(shù)覆蓋 VOLUME將本地文件夾或者其他容器的文件掛載到容器中 1.3 使用腳本創(chuàng)建鏡像 1.3.1 創(chuàng)建JDK1.8鏡像 步驟: (1) 創(chuàng)建目錄 mkdir p /us
4、r/local/dockerjdk8 (2) 下載jdk-8u171-linux-x64.tar.gz并上傳到服務(wù)器(虛擬機(jī))中 的/usr/local/dockerjdk8目錄 (3) 創(chuàng)建文件Dockerfile vi Dockerfile#依賴鏡像名稱和ID FROM centos:7#指定鏡像創(chuàng)建者信息MAINTAINER ITCAST#切換工作目錄WORKDIR /usrRUN mkdir/usr/local/java#ADD 是相對(duì)路徑j(luò)ar,把java添加到容器中 ADD jdk8u171linuxx64.tar.gz /usr/local/java/#配置java環(huán)境變量 EN
5、V JAVA_HOME /usr/local/java/jdk1.8.0_171 ENV JRE_HOME $JAVA_HOME/jreENV CLASSPATH$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH ENV PATH $JAVA_HOME/bin:$PATH(4) 執(zhí)行命令構(gòu)建鏡像 docker build t=jdk1.8 .注意后邊的空格和點(diǎn),不要省略 (5) 查看鏡像是否建立完成 docker images(6) 創(chuàng)建容器 docker run it name=myjdk8 jdk1
6、.8 /bin/bash果然可以創(chuàng)建喲1.3.2 創(chuàng)建Eureka鏡像 (1) 進(jìn)入控制臺(tái),eureka工程的目錄下,執(zhí)行maven命令 mvn clean package北京市昌平區(qū)建材城西路金燕龍辦公樓一層 電話:400-618-9090 (2) 服務(wù)器創(chuàng)建/usr/local/dockereureka目錄, 將生成的app.jar 上傳到服務(wù)器的此目錄 (3) 創(chuàng)建文件DockerfileFROM jdk1.8 VOLUME /tmpADD app.jar /usr/local/ENTRYPOINT java,jar,/usr/local/app.jar(4) 創(chuàng)建鏡像 docker b
7、uild t=eureka .(5) 創(chuàng)建容器 docker run di name=myeureka p 6868:6868 eureka2 Docker私有倉(cāng)庫(kù) 2.1 私有倉(cāng)庫(kù)搭建與配置 (1) 拉取私有倉(cāng)庫(kù)鏡像(此步省略) docker pull registry(2) 啟動(dòng)私有倉(cāng)庫(kù)容器 docker run di name=registry p 5000:5000 registry(3)打開瀏覽器 輸入地址35:5000/v2/_catalog看 到 repositories: (4) 修改daemon.json 表示私有倉(cāng)庫(kù)搭建成功并且內(nèi)容為空
8、 vi /etc/docker/daemon.json添加以下內(nèi)容,保存退出。 insecureregistries:35:5000此步用于讓 docker信任私有倉(cāng)庫(kù)地址 (5) 重啟docker 服務(wù) systemctl restart docker2.2 鏡像上傳至私有倉(cāng)庫(kù) (1) 標(biāo)記此鏡像為私有倉(cāng)庫(kù)的鏡像 docker tag jdk1.8 35:5000/jdk1.8(2) 上傳標(biāo)記的鏡像 docker push 35:5000/jdk1.82.3 DockerMaven插件 微服務(wù)部署有兩種方法: (1
9、) 手動(dòng)部署:首先基于源碼打包生成jar包(或war包),將jar包(或war包)上傳至虛擬機(jī)并拷貝至JDK容器。 (2) 通過(guò)Maven插件自動(dòng)部署。 對(duì)于數(shù)量眾多的微服務(wù),手動(dòng)部署無(wú)疑是非常麻煩的做法,并且容易出錯(cuò)。所以我們這里學(xué)習(xí)如何自動(dòng)部署,這也是企業(yè)實(shí)際開發(fā)中經(jīng)常使用的方法。 Maven插件自動(dòng)部署步驟: (1) 修改宿主機(jī)的docker配置,讓其可以遠(yuǎn)程訪問(wèn) vi /lib/systemd/system/docker.service北京市昌平區(qū)建材城西路金燕龍辦公樓一層 電話:400-618-9090 其中ExecStart=后添加配置H 修改后如下: tcp:/:2
10、375 H unix:/var/run/docker.sock復(fù)制后別忘記,在此行的上一行末尾加上(2) 刷新配置,重啟服務(wù) systemctl daemonreloadsystemctl restart docker(3) 在tensquare_eureka工程pom.xml 增加配置 apporg.springframework.bootspringbootmavenplugincom.spotifydockermavenplugin0.4.1335:5000/$project.artifactId:$project.versionjavajava, jar,/$
11、project.build.finalName.jar/$project.build.directory$project.build.finalName.jar35:2375(4) 在tensquare_eureka工程的src/main目錄下創(chuàng)建docker目錄,目錄下創(chuàng)建 Dockerfile文件,內(nèi)容如下: FROM jdk1.8 VOLUME /tmpADD app.jar app.jarENTRYPOINT java,jar,/app.jar解釋下這個(gè)配置文件: /var/lib/dockerVOLUME指定了臨時(shí)文件目錄為 /tmp 。其效果是
12、在主機(jī)目錄下創(chuàng) 建了一個(gè)臨時(shí)文件,并鏈接到容器的 /tmp 。此步驟是可選的,如果涉及到文件系統(tǒng)的應(yīng)用就很有必要了。 /tmp 目錄用來(lái)持久化到 Docker 數(shù)據(jù)文件夾,因?yàn)?Spring Boot 使用的內(nèi)嵌 Tomcat 容器默認(rèn)使用/t mp 作為工作目錄 項(xiàng)目的 jar 文件作為 “app.jar” 添加到容器的 ENTRYPOINT執(zhí)行項(xiàng)目 app.jar。為了縮短 Tomcat 啟動(dòng)時(shí)間,添加一個(gè)系統(tǒng)屬性指向 “/dev/urandom” 作為 Entropy Source(5) 在windows的命令提示符下,進(jìn)入tensquare_eureka工程所在的目錄,輸入以下 命令,
13、進(jìn)行打包和上傳鏡像 mvn clean package docker:buildDpushImage執(zhí)行后,會(huì)有如下輸出,代碼正在上傳 瀏覽器訪問(wèn) 35:5000/v2/_catalog ,輸出 repositories:tensquare_eureka(6) 進(jìn)入宿主機(jī) , 查看鏡像 docker images SIZEREPOSITORYCREATEDTAGIMAGE ID35:5000/tensquare_eureka1.0SNAPSHOT83efa6b4478c10 minutes ago687.9 MB192.168.1
14、84.135:5000/jdk1.8latest507438a0158f6 hours agojdk1.86 hours ago584 MBlatest507438a0158f 584 MB輸出如上內(nèi)容,表示tensquare_eureka微服務(wù)已經(jīng)做成鏡像 (7) 啟動(dòng)容器: docker run d name=eureka p 6868:6868 35:5000/tensquare_eureka:1.0SNAPSHOT3 理解持續(xù)集成 3.1 什么是持續(xù)集成 持續(xù)集成 Continuous integration ,簡(jiǎn)稱CI隨著軟件開發(fā)復(fù)雜度的不斷提高,團(tuán)隊(duì)開發(fā)成
15、員間如何更好地協(xié)同工作以確保軟件開發(fā)的質(zhì)量已經(jīng)慢慢成為開發(fā)過(guò)程中不可回避的問(wèn)題。尤其是近些年來(lái),敏捷(Agile) 在軟件工程領(lǐng)域越來(lái)越紅火,如何能再不斷變化的需求中快速適應(yīng)和保證軟件的質(zhì)量也顯得尤其的重要。 持續(xù)集成正是針對(duì)這一類問(wèn)題的一種軟件開發(fā)實(shí)踐。它倡導(dǎo)團(tuán)隊(duì)開發(fā)成員必須經(jīng)常集 成他們的工作,甚至每天都可能發(fā)生多次集成。而每次的集成都是通過(guò)自動(dòng)化的構(gòu)建 來(lái)驗(yàn)證,包括自動(dòng)編譯、發(fā)布和測(cè)試,從而盡快地發(fā)現(xiàn)集成錯(cuò)誤,讓團(tuán)隊(duì)能夠更快的開 發(fā)內(nèi)聚的軟件。 3.2 持續(xù)集成的特點(diǎn) 它是一個(gè)自動(dòng)化的周期性的集成測(cè)試過(guò)程,從檢出代碼、編譯構(gòu)建、運(yùn)行測(cè)試、結(jié)果記錄、測(cè)試統(tǒng)計(jì)等都是自動(dòng)完成的,無(wú)需人工干預(yù);
16、 需要有專門的集成服務(wù)器來(lái)執(zhí)行集成構(gòu)建; 北京市昌平區(qū)建材城西路金燕龍辦公樓一層 電話:400-618-9090 需要有代碼托管工具支持,我們下一小節(jié)將介紹Git以及可視化界面Gogs的使用 3.3 持續(xù)集成作用 保證團(tuán)隊(duì)開發(fā)人員提交代碼的質(zhì)量,減輕了軟件發(fā)布時(shí)的壓力; 持續(xù)集成中的任何一個(gè)環(huán)節(jié)都是自動(dòng)完成的,無(wú)需太多的人工干預(yù),有利于減少重復(fù)過(guò)程以節(jié)省時(shí)間、費(fèi)用和工作量; 4 Gogs4.1 什么是GogsGogs 是一款極易搭建的自助 Git 服務(wù)。 Gogs 的目標(biāo)是打造一個(gè)最簡(jiǎn)單、最快速和最輕松的方式搭建自助 Git 服務(wù)。使用 Go 語(yǔ)言開發(fā)使得 Gogs 能夠通過(guò)獨(dú)立的二進(jìn)制分發(fā),
17、并且支持 Go 語(yǔ)言支持的 所有平臺(tái),包括 Linux、Mac OS X、Windows 以及 ARM 平臺(tái)。 地址:/Unknown/gogs4.2 Gogs安裝與配置 4.2.1 安裝 1. 在centos中安裝git (鏡像中已經(jīng)安裝完成,此步驟省略) yum install git2. 創(chuàng)建用戶git 并設(shè)置 adduser git passwd git我這里設(shè)置的是itcast123. 上傳壓縮包 gogs0.11.43linux_amd64.tar.gz (資源目錄中提供)到centos,解壓 。 北京市昌平區(qū)建材城西路金燕龍辦公樓一層 電話:400
18、-618-9090 4. 使用命令 cd進(jìn)入到剛剛創(chuàng)建的目錄。 5. 執(zhí)行命令 ./gogs web4.2.2 配置 假設(shè)我的centos虛擬機(jī)IP為35 完成以下步驟 (1) 在地址欄輸入35:3000會(huì)進(jìn)入首次運(yùn)行安裝程序頁(yè)面,我們可以選擇一種數(shù)據(jù)庫(kù)作為gogs數(shù)據(jù)的存儲(chǔ),最簡(jiǎn)單的是選擇SQLite3。如果對(duì)于規(guī)模較大 的公司,可以選擇MySQL點(diǎn)擊“立即安裝”這里的域名要設(shè)置為centos的IP地址,安裝后顯示主界面 (2) 注冊(cè) (3) 登錄 (4) 創(chuàng)建倉(cāng)庫(kù) 4.3 IDEA配置Git步驟: (1) 在本地安裝git(W
19、indows版本)(2) 在IDEA中選擇菜單 : File - settings , 在窗口中選擇Version Control - Git4.4 將十次方代碼提交到Git(1) 選擇菜單VCS - Enable Version Control Integration.選擇Git(2) 設(shè)置遠(yuǎn)程地址: 右鍵點(diǎn)擊工程選擇菜單 Git - Repository -Remotes. (3) 右鍵點(diǎn)擊工程選擇菜單Git - Add(4) 右鍵點(diǎn)擊工程選擇菜單Git - Commit Directory.(5) 右鍵點(diǎn)擊工程選擇菜單Git - Repository - Push .5 運(yùn)用Jenkin
20、s實(shí)現(xiàn)持續(xù)集成 5.1 Jenkins簡(jiǎn)介 Jenkins,原名Hudson,2011年改為現(xiàn)在的名字,它 是一個(gè)開源的實(shí)現(xiàn)持續(xù)集成的軟件工具。官方網(wǎng)站:/。 Jenkins 能實(shí)施監(jiān)控集成中存在的錯(cuò)誤,提供詳細(xì)的日志文件和提醒功能,還能用圖表的形式形象地展示項(xiàng)目構(gòu)建的趨勢(shì)和穩(wěn)定性。 特點(diǎn): 北京市昌平區(qū)建材城西路金燕龍辦公樓一層 電話:400-618-9090 易安裝:僅僅一個(gè) java - jar jenkins.war,從官網(wǎng)下載該文件后,直接運(yùn)行,無(wú)需額外的安裝,更無(wú)需安裝數(shù)據(jù)庫(kù); 易配置:提供友好的GUI配置界面; 變更支持:Jenkins能從
21、代碼倉(cāng)庫(kù)(Subversion/CVS)中獲取并產(chǎn)生代碼更新列表并輸出到編譯輸出信息中; 支持永久鏈接:用戶是通過(guò)web來(lái)訪問(wèn)Jenkins的,而這些web頁(yè)面的鏈接地址都是永久鏈接地址,因此,你可以在各種文檔中直接使用該鏈接; 集成E-Mail/RSS/IM:當(dāng)完成一次集成時(shí),可通過(guò)這些工具實(shí)時(shí)告訴你集成結(jié)果(據(jù)我所知,構(gòu)建一次集成需要花費(fèi)一定時(shí)間,有了這個(gè)功能,你就可以在等待結(jié)果過(guò)程中,干別的事情); JUnit/TestNG測(cè)試報(bào)告:也就是用以圖表等形式提供詳細(xì)的測(cè)試報(bào)表功能; 支持分布式構(gòu)建:Jenkins可以把集成構(gòu)建等工作分發(fā)到多臺(tái)計(jì)算機(jī)中完成; 文件信息:Jenkins會(huì)保存哪次
22、集成構(gòu)建產(chǎn)生了哪些jars文件,哪一次集成構(gòu)建使用了哪個(gè)版本的jars文件等構(gòu)建記錄; 支持第三方插件:使得 Jenkins 變得越來(lái)越強(qiáng)大 5.2 Jenkins安裝 5.2.1 JDK安裝(此步略)(1) 將jdk-8u171-linux-x64.rpm上傳至服務(wù)器(虛擬機(jī)) (2) 執(zhí)行安裝命令 rpm ivh jdk8u171linuxx64.rpmRPM方式安裝JDK,其根目錄為:/usr/java/jdk1.8.0_171t5.2.2 Maven安裝 (1) 將Maven壓縮包上傳至服務(wù)器(虛擬機(jī)) (2) 解壓 tar zxvf apachemaven3.3.9bin.tar.g
23、z(3) 移動(dòng)目錄 北京市昌平區(qū)建材城西路金燕龍辦公樓一層 電話:400-618-9090 北京市昌平區(qū)建材城西路金燕龍辦公樓一層 電話:400-618-9090 (4) 編輯setting.xml配置文件庫(kù)目錄,內(nèi)容如下 mv apachemaven3.3.9 /usr/local/mavenvi /usr/local/maven/conf/settings.xml,配置本地倉(cāng) /usr/local/repository (5) 將開發(fā)環(huán)境的本地倉(cāng)庫(kù)上傳至服務(wù)器(虛擬機(jī))并移動(dòng)到/usr/local/repository 。 mv reponsitory_boot /usr/local/re
24、pository執(zhí)行此步是為了以后在打包的時(shí)候不必重新下載,縮短打包的時(shí)間。 (6) 編輯setting.xml配置文件v i /usr/local/maven/conf/settings.xmlcom.spotify5.2.3 Git與Gogs安裝 我們?cè)诘?節(jié)已經(jīng)完成此環(huán)境的安裝 5.2.4 Jenkins安裝與啟動(dòng) (1) 下載jenkinswget https:/pkg.jenkins.io/redhat/jenkins2.831.1.noarch.rpm(2) 安裝jenkinsrpm ivh jenkins2.831.1.noarch.rpm(3) 配置jenkinsvi /etc/sysconfig/jenkins修改用戶和端口 JENKINS_USER=root JENKINS_PORT=8888(4) 啟動(dòng)服務(wù) systemctl start jenkins(5) 35:8888從/var/lib/jenkins/secrets/initialAdminPassword中獲取初始串 (
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司缺少財(cái)務(wù)制度
- 設(shè)計(jì)院內(nèi)控財(cái)務(wù)制度
- 公司如何獨(dú)立財(cái)務(wù)制度
- 西安街道辦事處財(cái)務(wù)制度
- 關(guān)于食品的四個(gè)制度
- 公司制企業(yè)建立職工董事制度
- 養(yǎng)老院老人康復(fù)理療師晉升制度
- 施工現(xiàn)場(chǎng)施工防化學(xué)事故制度
- 幕墻施工方案公司(3篇)
- 校園消防安全管理制度
- GB/T 44828-2024葡萄糖氧化酶活性檢測(cè)方法
- 青海省西寧市2023-2024學(xué)年高一上學(xué)期物理期末試卷(含答案)
- 科大訊飛招聘在線測(cè)評(píng)題
- 醫(yī)療護(hù)具租賃合同模板
- 兒童性格發(fā)展與個(gè)性獨(dú)立性的培養(yǎng)
- 2024常壓儲(chǔ)罐檢驗(yàn)人員能力評(píng)價(jià)導(dǎo)則
- 物流管理概論王勇1
- 大學(xué)生預(yù)征對(duì)象登記表模板
- 胸外科-胸部創(chuàng)傷
- 2023版設(shè)備管理體系標(biāo)準(zhǔn)
- 劍橋英語(yǔ)PET真題校園版
評(píng)論
0/150
提交評(píng)論