亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 基礎常識 > 正文

在生產環境如何使用Docker部署應用

2020-10-21 21:50:48
字體:
來源:轉載
供稿:網友

Docker現在越來越流行,但是真正在生產環境部署Docker還是個比較新的概念,還沒有一個標準的流程。作者是ROR的程序員,作者結合平時的部署經驗,聯系Docker的特點,向大家分享了其在生產環境使用Docker部署應用程序的一個實踐。

Docker是現在開發應用程序的不錯選擇;因為對于一個研發組來說,部署一個應用再也不用像以前那樣繁瑣的修改、設置配置文件了;因為對于Docker來說它“屏蔽”了應用程序的運行環境,不管你使用Mac、Linux還是Windows都能用相同的方式運行。

但是,當你使用Docker將應用部署到生產環境時,你會覺得Docker還是有些“弱”,至少從Ruby On Rails(ROR)的角度出發是這樣的。當我查找與測試了很多不同的部署方法與Docker鏡像后發現:確實沒有一個確切而且標準的部署方案。在這篇文章中我會分享一種生產環境部署ROR應用的最佳實踐。

標準

在實際操作之前,我們列舉生產環境部署應用的標準:

1.易于使用:部署應用本身應該十分簡單,不然部署新程序的過程會變得十分“恐怖”。

2.零服務中斷:讓我們面對它——零服務中斷部署ROR應用程序已經成為當今的標準。

3.自動化部署:我更習慣把代碼推送到代碼倉庫,然后使用Codeship這樣的工具自動測試,測試通過后自動將代碼部署到生產環境的服務器。我希望Docker能完成相同的工作。
## 操作就像之前我說過的,我希望部署過程越簡單越好。如果你看過Docker:Part4這個視頻,可能對以下命令有所熟悉,它啟動了一個叫db的容器(跑postgres數據庫),之后又啟動了一個叫web的容器,最后將容器“web”跟容器“db”連接起來。

$ docker run -d --name db training/postgres$ docker run -i -t --name web --link db:db -p 45000:80

當然如果你照著這么做來部署程序,當你敲了很多次這樣的命令后,而且保證不遺漏的敲了很多次這種命令后,你會發現這是個“坑爹的”噩夢。這就是為什么會有Fig的原因。

FIG

如果你用Dockerfile來定義如何生成你的容器,那么Fig則可以幫你定義整個容器的運行框架。Fig將“添加數據卷(add volumes)”、“連接容器”(link container)與“映射端口”等操作都封裝到一個YAML的描述文件中;如同前面提到的CodeTV中描述的那個操作在Fig中簡化成如下形式:

web:build: .ports:- "80:80"links:- dbdb:image: postgresports:- "5432"volumes:- /etc/postgresql- /var/log/postgresql- /var/lib/postgresql

我在YAML中定義了兩個容器:web與db;容器web生成自當前文件夾下的Dockerfile,向外暴露了80號端口,同時鏈接到了容器db。容器db生成自DockerHub的PostgreSQL鏡像,向外暴露5432號端口。使用此YAML配置文件,fig可以用以下命令生成容器,然后依照配置文件的意圖啟動它們。

$ fig build$ fig up -d

Fig會先啟動被鏈接的容器db,這樣容器web就不至于連不上數據庫。-d參數表示以后臺運行的方式啟動容器,這樣可以保證用戶登出操作系統后,容器任然在運行。您可以登錄Fig的官方網站獲取更多的配置信息。

部署

現在我們可以很容易的啟動一個Docker容器,但是怎么在生產環境下部署Docker容器呢?如果在生產環境下安裝了Fig與Docker,我們所有要做的就是克隆之前的容器鏡像,然后用相同的fig命令來啟動容器。但是,現在的問題是如何更新線上運行的容器。

不幸的是,Fig可以非常優雅的啟動一個容器,但是它并不擅長更新并重啟服務。當然,你可以在代碼倉庫拉取程序的更新,然后重新運行以上的fig命令來達到這個目的;但是,在容器在更新代碼,重新啟動的過程中,就不能對外提供服務了。為了應對這種情況,我們使用原生的Docker命令,并引入Nginx做反向代理(注:軟負載)來解決這個問題。

我們首先把容器監聽的端口修改掉,因為Nginx需要監聽80號端口。我們這么修改:

web:build: .ports:- "8080:80"links:- db...

通過修改Fig的配置文件,我們的web容器修改成監聽8080號端口。而Nginx要配置成8080與8081端口的負載均衡;所以Nginx的配置如下:

upstream docker {server 127.0.0.1:8080;server 127.0.0.1:8081;}server {listen 80;location / {proxy_pass http://docker;}}

重啟Nginx后,Nginx就開始在8080與8081號端口之間做反向代理(軟負載);當其中任何一個端口失效后,Nginx將請求自動轉發到另一個,直到失效后的端口恢復。這樣,我們就能從Git中拉取更新,然后運行下面的命令將其啟動:

$ docker run -d --name web1 --link codetvjournal_db_1:db -p 8081:80 codetvjournal_web:latest

當我們確定8081號端口的web1容器啟動并服務正常后,我們就可以停止8080號端口的服務并開始為8080號端口服務進行更新了。我推薦使用原生的docker命令而不使用Fig來完成這個工作,因為這樣可以避免干擾到正在運行的db容器(注:作者可能指的是之前寫好的YAML,里面包含了啟動db容器的配置)

我們可以用上述方法創建很多個web容器,只要保證它們占用的端口與容器名不同即可;同時使用Nginx在它們前端做負載即可實現不掉線的程序升級。

自動化

那么問題又來了,怎么將上述的更新流程自動化運行呢?有兩個方式可以達到:

1.將容器更新、啟停、切換等操作封裝到一個單一的腳本中,這個腳本可以加入到傳統的上線流程(注:新代碼拉取,自動測試,自動部署的流程,作者稱之為deployment pipeline)之后執行;

2.另一種方式是,使用類似Consul或者etcd等的發現服務來管理容器的更新,啟停,與發現;這會更加“高大上”。

所以,使用Docker在生產環境中部署服務不像你想象中那么容易。我推薦大家試試上面所說的方法;同時分享你自己的實踐經驗給大家,這會幫助大家一同使用Docker。Docker還是個很年輕的產品,同時又是個非常熱門的產品,它肯定會在未來不斷的演化升級。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产69精品久久久久99| 蜜臀久久99精品久久久无需会员| 成人免费看吃奶视频网站| 91精品久久久久久久久| 国产精品综合久久久| 亚洲免费视频在线观看| 国产精品入口夜色视频大尺度| 欧美成人免费在线视频| 日韩欧美国产高清91| 中文字幕v亚洲ⅴv天堂| 77777亚洲午夜久久多人| 福利一区视频在线观看| 亚洲一区999| 日本电影亚洲天堂| 法国裸体一区二区| 国外成人免费在线播放| 懂色av中文一区二区三区天美| 国产美女直播视频一区| 欧美性资源免费| 97视频在线观看免费高清完整版在线观看| 欧美性理论片在线观看片免费| 色综合91久久精品中文字幕| 97久久久免费福利网址| 亚洲欧美中文在线视频| 欧美激情喷水视频| www国产精品com| 97视频在线观看亚洲| 国产亚洲欧美日韩精品| 久久夜色精品国产欧美乱| 岛国av一区二区在线在线观看| 岛国av一区二区| 午夜精品一区二区三区av| 国产成人a亚洲精品| 69久久夜色精品国产7777| 国内精品视频在线| 97久久精品视频| 国产视频精品一区二区三区| 亚洲韩国日本中文字幕| 国产精品91在线| 欧美做爰性生交视频| 欧美视频不卡中文| 亚洲欧美日韩天堂| 亚洲精品国产电影| 色偷偷噜噜噜亚洲男人| 欧美亚洲视频在线观看| 成人免费视频网址| 成人免费网站在线看| 欧美精品第一页在线播放| 久久中文字幕视频| 欧美午夜www高清视频| 蜜臀久久99精品久久久无需会员| 欧美日本在线视频中文字字幕| 91精品久久久久久久久久久久久久| 欧美日韩精品在线播放| 国产精品网站入口| 国产精品久久久久免费a∨| 91av视频在线免费观看| 亚洲精选在线观看| 亚洲日韩第一页| 色噜噜狠狠狠综合曰曰曰88av| 国产美女精彩久久| 亚洲男人7777| 亚洲综合国产精品| 欧美大片va欧美在线播放| 中文在线资源观看视频网站免费不卡| 欧美性极品xxxx娇小| 中文字幕精品久久| 国产一区二区动漫| 最近2019免费中文字幕视频三| 久久免费精品日本久久中文字幕| 国产成人精彩在线视频九色| 欧美另类在线播放| 91在线观看欧美日韩| 亚洲毛茸茸少妇高潮呻吟| 搡老女人一区二区三区视频tv| 欧美成年人网站| 国产精品视频白浆免费视频| 国产一区二区三区在线视频| 国产精品久久久久久久美男| 青青草原成人在线视频| 国产午夜精品一区理论片飘花| 粗暴蹂躏中文一区二区三区| 在线观看91久久久久久| 欧美大片在线免费观看| 亚洲精品大尺度| 国产成人小视频在线观看| 亚洲日韩中文字幕在线播放| 国产精品夜间视频香蕉| 欧美日韩国产丝袜美女| 色噜噜狠狠色综合网图区| 最近中文字幕2019免费| 亚洲精品国产电影| 欧美日韩国产一中文字不卡| 欧美激情图片区| 欧美另类极品videosbest最新版本| 91在线观看免费观看| 欧洲s码亚洲m码精品一区| 欧美孕妇孕交黑巨大网站| 亚洲图片在区色| 中文字幕亚洲国产| 韩国三级日本三级少妇99| 国产精品91在线观看| 国产日韩av在线播放| 高清欧美电影在线| 美女精品久久久| 精品福利樱桃av导航| 97国产精品免费视频| 亚洲精品自产拍| 日本不卡免费高清视频| 精品偷拍一区二区三区在线看| 97视频在线观看成人| 欧美自拍大量在线观看| 国产丝袜高跟一区| 久久婷婷国产麻豆91天堂| 亚洲综合色av| 欧美野外猛男的大粗鳮| 欧美香蕉大胸在线视频观看| 国产精品久久久| 日韩欧美一区二区三区| 国外成人性视频| 久久夜精品va视频免费观看| 一道本无吗dⅴd在线播放一区| 日韩欧美精品中文字幕| 欧美极度另类性三渗透| 日韩大陆欧美高清视频区| 亚洲视频在线看| 自拍偷拍亚洲区| 国产成人精品999| 欧美国产一区二区三区| 国产成人jvid在线播放| 97视频在线观看亚洲| 91精品国产色综合久久不卡98口| 久久久噜噜噜久噜久久| 欧美自拍视频在线| 97久久国产精品| 久久久国产视频| 日韩在线视频免费观看| 91手机视频在线观看| 亚洲网站在线观看| 国产精品99久久久久久久久久久久| 亚洲色图av在线| 亚洲国产精品专区久久| 性亚洲最疯狂xxxx高清| 欧美色欧美亚洲高清在线视频| 欧美日韩在线视频一区二区| 成人亲热视频网站| 国产精品99久久久久久白浆小说| 国产精品wwww| 最近2019中文字幕第三页视频| 亚洲深夜福利视频| 国产91色在线|| 国产精品久久婷婷六月丁香| 最新的欧美黄色| 亚洲精品中文字幕女同| 亚洲天堂开心观看| 免费99精品国产自在在线| 久久婷婷国产麻豆91天堂| 欧美视频在线视频| 亚洲欧美制服第一页| 国产精品久久中文| 日韩精品一二三四区| 97精品久久久| 欧美午夜无遮挡| 中文字幕不卡在线视频极品|