基于Docker-Compose 部署前后端分離單體項目(一)

1.單體項目是否需要采用docker進行部署?
2.如果采用docker部署是否有必要采用docker-compose進行服務編排千贯?

答案是也許有必要新思,也許沒必要亿扁,docker的優(yōu)勢很多武鲁,但是對于垂直架構的項目優(yōu)勢未必那么明顯,總之一句你需要根據(jù)自己的項目情況去考慮头滔。筆者之所以會寫這篇文章怖亭,大概率是基于省事的目的去部署一些小的項目。同時也是提供一種前后端分離的項目的部署方案(但絕對不是最有方案),以及在這種模式下的docker如何去工作才能達到我們的目的坤检。

然而最終的目的是為了偷懶兴猩,省事。讓前后端分離項目的部署方式變的簡單早歇。就也許在這種模式下倾芝,你只需要5分鐘就可以實現(xiàn)部署,或許吧箭跳,不妨把這個當作一個目標晨另。

本文目標:

  • 環(huán)境說明。
  • 部署流程說明谱姓。

1.環(huán)境

1.1 項目情況

  • springboot+maven
  • redis
  • mysql
  • nginx
  • vue(后臺web admin)
  • uni-app(H5)

1.2 本地環(huán)境

  • docker 19.03.2
  • 其他開發(fā)必備(因為關聯(lián)不大借尿,所以不交代)

1.3 服務器環(huán)境

  • 1臺 ubuntu 18.04 (基于Centos差異,在后續(xù)文章會進行交代)
  • docker
  • docker-compose
  • 當前服務器docker上部署mysql,redis,nginx,java,admin,h5

1.4 鏡像倉庫

  • 阿里云容器鏡像服務(免費屉来,個人覺得挺好用的路翻,有需要也可以去試一下)

2 部署流程

部署架構圖

上圖將部署流程分為三部分,本地開發(fā)環(huán)境茄靠,阿里云容器鏡像服務茂契,以及l(fā)inux服務器。下面分成三個部分對上圖進行說明慨绳,工欲善其事掉冶,必先利其器真竖。先進行說明,后面才能對每部分做的工作比較清晰厌小。

2.1 本地開發(fā)環(huán)境

本地開發(fā)環(huán)境分成三個項目

  • pitaya-java (springboot+maven)
  • pitaya-h5(uni-app)
  • pitaya-admin(vue)
    三個項目分別打包成三個鏡像恢共,對應到阿里云中的是那個鏡像倉庫,三個鏡像名字分別為
  • pitaya-java
  • pitaya-h5
  • pitaya-admin
    然而我們版本迭代就設計到了不同的版本問題,對應了鏡像不同標簽tag召锈。
    例如 pitaya-java:1.0.o 就說明是后臺1.o.0的版本旁振,版本保留在鏡像倉庫,這樣對于我們后期需要回滾版本也非常好做涨岁!
    本地環(huán)境需要做的事情是需要打包鏡像并且推送到鏡像倉庫 這一點是大家需要記住的拐袜,這就是為什么一定要在這里寫這么多廢話來說明,至于怎樣打包鏡像推送梢薪,在下一片文章會講到蹬铺,此處大家只需要記住,鏡像是從開發(fā)環(huán)境推送過去的(或者也可以采用jenkins進行推送秉撇,如果有需要也可以在后面再去開專題寫用jenkins做持續(xù)集成)

2.2 阿里云容器鏡像服務說明

先解釋一下圖中的相關名詞

  • 命名空間:阿里云容器服務的命名空間我習慣當成一個項目來用甜攀,例如我們開發(fā)一個crm項目,crm這個項目就相當于我們的命名空間琐馆。
  • 鏡像倉庫:鏡像倉庫屬于命名空間规阀,一個命名空間有多個鏡像倉庫,就相當于我們一個crm項目有后臺java端的鏡像(如果微服務瘦麸,就可能拆分出更多的服務谁撼,我們可以把每個服務都當成一個鏡像倉庫),前端項目等滋饲。鏡像倉庫就對應我們每個服務打包的鏡像厉碟,他存儲著這些鏡像不同的版本。
  • tag: tag其實本身是docker鏡像的概念屠缭,我們可以理解為一個鏡像的不同版本箍鼓。例如1.0.0,1.0.1等呵曹。
    針對當前需要完成的目標來說款咖,相當于pitaya-java,pitaya-h5, pitaya-admin都分別擁有自己的鏡像倉庫奄喂,都屬于pitaya這個命名空間之剧。

容器鏡像服務,分門別類的存儲我們的鏡像砍聊。這個是鏡像服務的唯一用途,就相當于maven的倉庫是一樣的贰军。

我們也可以搭建自己的私服倉庫玻蝌,例如開源的harbor等蟹肘,都非常好用,在企業(yè)中用私服會比較多俯树。

2.3 Linux服務器

首先我們需要在linux服務器上搭建Docker環(huán)境帘腹,也就是我們在linux上有一個docker。再將我們的鏡像運行在docker上许饿。

從上圖我們發(fā)現(xiàn)在docker上運行這很多容器阳欲,mysql,redis陋率,nginx球化,pitaya-java,pitaya-admin,pitaya-h5.

然而我們的容器是需要通信的,例如:大家都知道pitaya-java是一個springboot的項目瓦糟,他需要訪問mysql進行數(shù)據(jù)存儲服務筒愚,需要訪問redis緩存我們的令牌信息等。

也就是說菩浙,我們運行的這些容器之間是要相互能通信的巢掺。所以我們在docker上創(chuàng)建了一個內部網絡叫做pitaya-network,他在172.2.0.0這個網段劲蜻,我們需要我們的容器都加入pitaya-network這個網絡陆淀,并且分配固定的IP地址,指定固定端口。

為什么需要分配固定IP地址先嬉,指定固定端口? 因為我們的容器也可能會和服務器一樣轧苫,會掛掉,如果隨機分配的話坝初,創(chuàng)建新的容器浸剩,IP地址可能會變,我們容器間不能通信鳄袍,例如java服務訪問不了mysql绢要,這樣我們的線上就無法提供客戶正常服務了。

3 總結

本文我們做一個大概的概述拗小,針對上面的結構以下問題是我們急需解決的重罪?

  • 1.如何制作鏡?
  • 2.是否制作的鏡像可以不受環(huán)境影響哀九,例如數(shù)據(jù)庫鏈接等是可以在運行的時候指定的剿配?
  • 3.如何推送鏡像到阿里云容器鏡像服務或者你的私服?

其實針對java項目和vue項目制作鏡像方式不同阅束,但是原理一樣呼胚,原理無非就是基于docker build這個命令制作鏡像,但是java的鏡像制作和推送可能更加簡單息裸,只需要一條命令即可蝇更,因為maven提供了制作鏡像的插件沪编。這些內容在下一篇文章都會涉及到!

3.1 其他想說的話

想要表達清楚一鍵事情是非常不容易的事情年扩,特別是通過文字蚁廓,既不想廢話連篇,又想表達清楚真的很難厨幻,因為細節(jié)比較多相嵌!然而我覺得弄清楚大方向是非常必要的,然后再進行分解况脆,希望能說的明白饭宾,我會加油的,如果寫的不好也希望大家原諒漠另!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末捏雌,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子笆搓,更是在濱河造成了極大的恐慌性湿,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件满败,死亡現(xiàn)場離奇詭異肤频,居然都是意外死亡,警方通過查閱死者的電腦和手機算墨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門宵荒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人净嘀,你說我怎么就攤上這事报咳。” “怎么了挖藏?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵暑刃,是天一觀的道長。 經常有香客問我膜眠,道長岩臣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任宵膨,我火速辦了婚禮架谎,結果婚禮上,老公的妹妹穿的比我還像新娘辟躏。我一直安慰自己谷扣,他們只是感情好,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布捎琐。 她就那樣靜靜地躺著抑钟,像睡著了一般涯曲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上在塔,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機與錄音拨黔,去河邊找鬼蛔溃。 笑死,一個胖子當著我的面吹牛篱蝇,可吹牛的內容都是我干的贺待。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼零截,長吁一口氣:“原來是場噩夢啊……” “哼麸塞!你這毒婦竟也來了?” 一聲冷哼從身側響起涧衙,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤哪工,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后弧哎,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雁比,經...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年撤嫩,在試婚紗的時候發(fā)現(xiàn)自己被綠了偎捎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡序攘,死狀恐怖茴她,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情程奠,我是刑警寧澤丈牢,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站梦染,受9級特大地震影響赡麦,放射性物質發(fā)生泄漏。R本人自食惡果不足惜帕识,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一泛粹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肮疗,春花似錦晶姊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钾怔。三九已至,卻和暖如春蒙挑,著一層夾襖步出監(jiān)牢的瞬間宗侦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工忆蚀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留矾利,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓馋袜,卻偏偏與公主長得像男旗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子欣鳖,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345