第2章 2.1 API 服務(wù)的持續(xù)更新,代碼從鏡像中分離

在上一章我提到過一篇【第1章 1.5 API 服務(wù) (webapi) 部署到Docker容器中 http://www.reibang.com/p/13c7f5cfc4a1】淆珊,講述的是如何將github上的源碼打包到Docker鏡像中,其中Dockerfile如下

FROM microsoft/dotnet
MAINTAINER DAIJINMING@LIVE.CN
RUN apt-get update && apt-get install -y \
  git
RUN git clone -q https://github.com/dockersample/webapi.git
WORKDIR webapi/
RUN  dotnet restore
EXPOSE 5000

CMD ["dotnet","run"]

使用上面的Dockerfile構(gòu)建鏡像的時候夺饲,每次都是從Github上下載最新代碼,將代碼和dotnet環(huán)境打包到一起形成最新的鏡像。

隨著開發(fā)的迭代往声,后臺API可能經(jīng)常要更新擂找,每次更新API都需要重新構(gòu)建Dockerfile,更新容器鏡像浩销。這樣不僅浪費時間和CPU,還會對業(yè)務(wù)造成一定的影響贯涎。
這時候我們確實應(yīng)該思考下是否有必要每次都更新鏡像?

Docker提供了一個容器掛接宿主磁盤的代碼目錄的功能撼嗓,將宿主磁盤目錄映射為容器磁盤目錄柬采,將github上的代碼下載到宿主磁盤的代碼目錄中,如果一旦github上的代碼更新且警,就直接更新宿主磁盤的代碼目錄中的程序源碼粉捻,然后重啟容器,API服務(wù)就得到了更新斑芜,免去了重新構(gòu)建容器鏡像的過程肩刃。

實現(xiàn)過程如下:

前提

編寫Dockerfile

FROM microsoft/dotnet
MAINTAINER DAIJINMING@LIVE.CN

VOLUME /codebase  ## 用于掛接磁盤

EXPOSE 5000
WORKDIR /codebase

ENTRYPOINT ["dotnet","restore"]
ENTRYPOINT ["dotnet","run"]

獲得最新代碼

  • git clone 或 git pull
    克隆或拉取最新代碼到本地磁盤

構(gòu)建鏡像

定位到Dockerfile文件目錄,這次設(shè)置的鏡像名字:djm/dotnet ,而不是之前 djm/webapi,這個主要考慮到這個鏡像是通用的dotnet鏡像,和業(yè)務(wù)沒關(guān)系杏头,在運行鏡像時盈包,采用不同路徑、名稱來區(qū)分不同服務(wù)醇王。

docker build -t djm/dotnet .

運行鏡像

docker run --name webapi  -d  -p 5000:5000 -v /home/daijinming/demo/codebase/webapi:/codebase  djm/dotnet

掛接宿主磁盤目錄:-v /home/daijinming/demo/codebase/webapi
命名容器:--name webapi
對外端口:5000
上述參數(shù)都可以根據(jù)不同路徑的代碼修改進(jìn)行區(qū)分呢燥。

運行容器后,查看下當(dāng)前在運行的容器:

root@dai-u:/home/daijinming/demo/code/docker# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
1c0f88ca3f8c        djm/dotnet          "dotnet run"        5 seconds ago       Up 3 seconds        0.0.0.0:5000->5000/tcp   webapi

將穩(wěn)定寓娩、復(fù)雜的部分封裝到Docker鏡像中叛氨,這應(yīng)該才是Docker的本質(zhì)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末棘伴,一起剝皮案震驚了整個濱河市寞埠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌焊夸,老刑警劉巖仁连,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異阱穗,居然都是意外死亡饭冬,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門揪阶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來昌抠,“玉大人,你說我怎么就攤上這事遣钳。” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵蕴茴,是天一觀的道長劝评。 經(jīng)常有香客問我,道長倦淀,這世上最難降的妖魔是什么蒋畜? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮撞叽,結(jié)果婚禮上姻成,老公的妹妹穿的比我還像新娘。我一直安慰自己愿棋,他們只是感情好科展,可當(dāng)我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著糠雨,像睡著了一般才睹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上甘邀,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天琅攘,我揣著相機與錄音,去河邊找鬼松邪。 笑死坞琴,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的逗抑。 我是一名探鬼主播剧辐,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼锋八!你這毒婦竟也來了浙于?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤挟纱,失蹤者是張志新(化名)和其女友劉穎羞酗,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體紊服,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡檀轨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了欺嗤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片参萄。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖煎饼,靈堂內(nèi)的尸體忽然破棺而出讹挎,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布筒溃,位于F島的核電站马篮,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏怜奖。R本人自食惡果不足惜浑测,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望歪玲。 院中可真熱鬧迁央,春花似錦、人聲如沸滥崩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽夭委。三九已至幅狮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間株灸,已是汗流浹背崇摄。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留慌烧,地道東北人逐抑。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像屹蚊,于是被迫代替她去往敵國和親厕氨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容