国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

使用Compose和Machine實(shí)現(xiàn)本地與云端的同步部署與管理

云計算
Docker是個強(qiáng)大工具,用于啟動隔離的、可重復(fù)生產(chǎn)的應(yīng)用環(huán)境容器。本文側(cè)重講述如何為本地開發(fā)容器化Flask應(yīng)用,同時使用Docker Compose和Docker Machine將應(yīng)用交付到云主機(jī)提供商中。

前言

Docker 1.6發(fā)布了,Compose和Machine都在更新之列。本文具體說明了如何使用這兩個組件來實(shí)現(xiàn)本地與云端的同步部署與管理。

Docker是個強(qiáng)大工具,用于啟動隔離的、可重復(fù)生產(chǎn)的應(yīng)用環(huán)境容器。本文側(cè)重講述如何為本地開發(fā)容器化Flask應(yīng)用,同時使用Docker Compose和Docker Machine將應(yīng)用交付到云主機(jī)提供商中。

本地設(shè)置

與Docker(v1.6.0)一起,我們將使用:

  • Docker Compose(v1.2.0),即此前的fig,用于將一個多容器應(yīng)用編排成一個單一應(yīng)用。
  • Docker Machine(v0.2.0)用于在本地和云端創(chuàng)建Docker主機(jī)。

檢驗(yàn)一下安裝是否成功:

  1. $ docker-machine --version 
  2.  
  3. docker-machine version 0.2.0 (8b9eaf2) 
  4.  
  5. $ docker-compose --version 
  6.  
  7. docker-compose 1.2.0 

然后,從此倉庫克隆項目,或按該倉庫的項目結(jié)構(gòu)創(chuàng)建你自己的項目:

  1. ├── copy.sh 
  2.  
  3. ├── docker-compose.yml 
  4.  
  5. ├── nginx 
  6.  
  7. │ ├── Dockerfile 
  8.  
  9. │ └── sites-enabled 
  10.  
  11. │ └── flask_project 
  12.  
  13. └── web 
  14.  
  15. ├── Dockerfile 
  16.  
  17. ├── app.py 
  18.  
  19. ├── config.py 
  20.  
  21. ├── create_db.py 
  22.  
  23. ├── models.py 
  24.  
  25. ├── requirements.txt 
  26.  
  27. ├── static 
  28.  
  29. │ ├── css 
  30.  
  31. │ │ ├── bootstrap.min.css 
  32.  
  33. │ │ └── main.css 
  34.  
  35. │ ├── img 
  36.  
  37. │ └── js 
  38.  
  39. │ ├── bootstrap.min.js 
  40.  
  41. │ └── main.js 
  42.  
  43. └── templates 
  44.  
  45. ├── _base.html 
  46.  
  47. └── index.html 

這樣就為容器啟動和運(yùn)行做好了準(zhǔn)備。現(xiàn)在進(jìn)入Docker Machine。

#p#

Docker Machine

要啟動Docker Machine,只需簡單地運(yùn)行:

  1. $ docker-machine create -d virtualbox dev; 
  2.  
  3. INFO[0000] Creating CA: /Users/michael/.docker/machine/certs/ca.pem 
  4.  
  5. INFO[0000] Creating client certificate: /Users/michael/.docker/machine/certs/cert.pem 
  6.  
  7. INFO[0001] Downloading boot2docker.iso to /Users/michael/.docker/machine/cache/boot2docker.iso... 
  8.  
  9. INFO[0035] Creating SSH key... 
  10.  
  11. INFO[0035] Creating VirtualBox VM... 
  12.  
  13. INFO[0043] Starting VirtualBox VM... 
  14.  
  15. INFO[0044] Waiting for VM to start... 
  16.  
  17. INFO[0094"dev" has been created and is now the active machine. 
  18.  
  19. INFO[0094] To point your Docker client at it, run this in your shell: $(docker-machine env dev) 
  20.  
  21. $ $(docker-machine env dev) 
  22.  
  23. create命令為Docker開發(fā)設(shè)置了一臺“machine”(名為dev)。實(shí)際上,它下載了boot2docker,并啟動了一個運(yùn)行Docker的虛擬機(jī)。 
  24.  
  25. 運(yùn)行如下命令來查看當(dāng)前運(yùn)行的Machine: 
  26.  
  27. $ docker-machine ls 
  28.  
  29. NAME ACTIVE DRIVER STATE URL SWARM 
  30.  
  31. dev * virtualbox Running tcp://192.168.99.100:2376 

接下來,讓我們使用Docker Compose來啟動容器,讓Flask應(yīng)用及Postgres數(shù)據(jù)庫啟動并運(yùn)行起來。

#p#

Docker Compose

來看一眼docker-compose.yml文件:

  1. web: 
  2.  
  3. restart: always 
  4.  
  5. build: ./web 
  6.  
  7. expose: 
  8.  
  9. "8000" 
  10.  
  11. links: 
  12.  
  13. - postgres:postgres 
  14.  
  15. volumes: 
  16.  
  17. - /usr/src/app 
  18.  
  19. env_file: .env 
  20.  
  21. command: /usr/local/bin/gunicorn -w 2 -b :8000 app:app 
  22.  
  23. nginx: 
  24.  
  25. restart: always 
  26.  
  27. build: ./nginx/ 
  28.  
  29. ports: 
  30.  
  31. "80:80" 
  32.  
  33. volumes: 
  34.  
  35. - /www/static 
  36.  
  37. links: 
  38.  
  39. - web:web 
  40.  
  41. data: 
  42.  
  43. restart: always 
  44.  
  45. image: postgres:latest 
  46.  
  47. volumes: 
  48.  
  49. - /var/lib/postgresql 
  50.  
  51. command: true 
  52.  
  53. postgres: 
  54.  
  55. restart: always 
  56.  
  57. image: postgres:latest 
  58.  
  59. volumes_from: 
  60.  
  61. - data 
  62.  
  63. ports: 
  64.  
  65. "5432:5432" 

這里,我們定義了四個服務(wù):web、 nginx、 postgres和 data。

  • 首先,web服務(wù)是通過Dockerfile的指令在“web”目錄中構(gòu)建的,在此設(shè)置了Python環(huán)境,安裝了必要軟件,并將Flask應(yīng)用運(yùn)行于8000端口。這個端口會被轉(zhuǎn)發(fā)到宿主環(huán)境(比如Docker Machine)的80端口上。該服務(wù)還將.env文件中定義的環(huán)境變量添加到了容器里。
  • nginx服務(wù)作為反向代理用于轉(zhuǎn)發(fā)請求到Flask應(yīng)用或靜態(tài)文件上。
  • 下一個,postgres服務(wù)構(gòu)建于Docker Hub的官方PostgreSQL鏡像,安裝了Postgres并將服務(wù)器運(yùn)行于默認(rèn)的5432端口上。
  • ***,請注意有一個單獨(dú)的卷容器data用于存儲數(shù)據(jù)庫數(shù)據(jù)。這確保了即便Postgres容器被完全地銷毀,數(shù)據(jù)仍然存在。

在構(gòu)建鏡像前,我們需要將靜態(tài)文件從“web/static”目錄復(fù)制到“nginx/static”中,因?yàn)閚ginx Dockerfile是從“nginx”目錄中添加靜態(tài)文件目錄的。要這么做,只需要簡單地運(yùn)行copy.sh腳本:

  1. $ sh copy.sh 

現(xiàn)在,要運(yùn)行容器,只要構(gòu)建鏡像然后啟動服務(wù)即可:

  1. $ docker-compose build 
  2.  
  3. $ docker-compose up -d 

去喝一杯咖啡。或是兩杯。***次運(yùn)行時間會久一點(diǎn)。

我們還需要創(chuàng)建數(shù)據(jù)庫表:

  1. $ docker-compose run web /usr/local/bin/python create_db.py 

打開瀏覽器并訪問與Docker Machine關(guān)聯(lián)的IP地址(docker-machine ip):

 

棒極了!

要查看web服務(wù)可用的環(huán)境變量,運(yùn)行:

  1. $ docker-compose run web env 

要查看日志:

  1. $ docker-compose logs 

你也可以進(jìn)入Postgres命令行,這是因?yàn)槲覀冊赿ocker-compose.yml文件中轉(zhuǎn)發(fā)了它的端口到宿主環(huán)境中,可以這樣添加用戶/角色及數(shù)據(jù)庫:

  1. $ psql -h 192.168.99.100 -p 5432 -U postgres --password 

一旦完成,通過docker-compose stop停止所有進(jìn)程。

#p#

部署

在應(yīng)用運(yùn)行于本地的同時,我們可以使用Docker Machine將與之完全相同的環(huán)境推送到云主機(jī)提供商上。我們來部署到Digital Ocean的droplet里。

在Digital Ocean注冊完成后,生成一個“個人訪問令牌”,然后運(yùn)行以下命令:

  1. $ docker-machine create \ 
  2.  
  3. -d digitalocean \ 
  4.  
  5. --digitalocean-access-token=你的令牌 \ 
  6.  
  7. production 

這將花費(fèi)幾分鐘來準(zhǔn)備droplet并設(shè)置一個名為production的新的Docker Machine:

  1. INFO[0000] Creating SSH key... 
  2.  
  3. INFO[0001] Creating Digital Ocean droplet... 
  4.  
  5. INFO[0133"production" has been created and is now the active machine. 
  6.  
  7. INFO[0133] To point your Docker client at it, run this in your shell: eval "$(docker-machine env production)" 

現(xiàn)在,我們運(yùn)行了兩個Machine,一個本地的,一個在Digital Ocean上:

  1. $ docker-machine ls 
  2.  
  3. NAME ACTIVE DRIVER STATE URL SWARM 
  4.  
  5. dev * virtualbox Running tcp://192.168.99.100:2376 
  6.  
  7. production digitalocean Running tcp://104.131.107.8:2376 

然后,設(shè)置production作為活動machine,并將Docker環(huán)境加載到命令行中:

  1. $ docker-machine active production 
  2.  
  3. $ eval "$(docker-machine env production)" 

***,在云端再次構(gòu)建Flask應(yīng)用:

  1. $ docker-compose build 
  2.  
  3. $ docker-compose up -d 
  4.  
  5. $ docker-compose run web /usr/local/bin/python create_db.py 

找到Digital Ocean賬號關(guān)聯(lián)的IP地址,并在瀏覽器中查看。如果所有東西都正確,應(yīng)該能看到應(yīng)用已經(jīng)運(yùn)行起來了。

 

 

責(zé)任編輯:Ophira 來源: dockerone
相關(guān)推薦

2019-03-28 05:21:07

WLANWi-Fi網(wǎng)絡(luò)

2023-10-10 00:09:14

2022-09-12 07:17:20

redis命令redissynce

2013-10-16 09:38:23

云端應(yīng)用部署工具應(yīng)用部署工具云測試

2024-03-08 11:30:38

SaaSIT管理平臺管理

2025-11-27 10:14:58

2020-07-03 07:38:58

云物聯(lián)網(wǎng)物聯(lián)網(wǎng)IOT

2023-05-29 16:11:37

物聯(lián)網(wǎng)云計算

2014-12-05 09:53:59

docker容器管理開源

2024-01-17 08:01:28

Docker語法命令

2011-09-21 14:25:16

2014-04-30 15:52:59

紅帽

2015-08-03 16:15:53

Docker部署集群

2021-12-14 00:00:51

監(jiān)控 部署故障

2013-08-01 11:46:55

云安全安全警報安全報告

2017-01-11 16:57:51

大數(shù)據(jù)大數(shù)據(jù)集群監(jiān)控

2012-03-16 15:39:51

VMware應(yīng)用程序虛擬化

2011-08-23 10:37:15

Oracle分區(qū)表本地索引

2017-05-23 15:53:52

docker服務(wù)容器

2024-09-06 12:28:48

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

精品无码一区二区三区在线| 免费一区二区三区在线观看| 狠狠综合久久av一区二区蜜桃 | 黄色视屏免费在线观看| 91原创在线视频| 在线国产伦理一区| 亚洲一区成人| 国产亚洲自拍偷拍| 亚洲欧美综合久久久| 国产精品久久久久9999| 丝袜美腿一区二区三区动态图| 粗暴蹂躏中文一区二区三区| **国产精品| 欧美人与性动交| 91精品国产自产在线丝袜啪| 欧美激情精品久久久久久黑人 | 加勒比成人在线| 国产一区二区三区四区五区美女| 神马影院我不卡| 久久国产人妖系列| www.69av| 久久伊人蜜桃av一区二区| 欧美极品欧美精品欧美图片| 久久久国产精品麻豆| 99热在线免费| 午夜激情久久久| av在线天堂播放| 91精品国产91久久久久久最新毛片 | 中文字幕欧美日韩一区二区| 美女视频网站久久| 大桥未久一区二区三区| 粉嫩一区二区三区在线看| 六月丁香激情网| 国产精品美女久久久久高潮| 一级毛片免费看| 在线亚洲人成电影网站色www| 色三级在线观看| 日韩av在线高清| 欧洲亚洲精品久久久久| 久久久久久亚洲精品| 日韩精品四区| 六月婷婷久久| 久久se精品一区二区| 狠狠干 狠狠操| 亚洲精品国产a久久久久久| 每日更新在线观看av| 亚洲福利视频二区| 国产亚洲亚洲国产一二区| 国产精品777| 9色精品在线| 野外做受又硬又粗又大视频√| 国产免费成人在线视频| 中文字幕在线免费观看| 日韩欧美中文字幕制服| 一区二区三区日本视频| 国产精品中文字幕久久久| 天堂成人国产精品一区| aaaaaa亚洲| 欧美综合一区二区| 国产成人免费精品| 国产日韩专区在线| 韩国v欧美v日本v亚洲v| 日本a级片免费| 日韩三级高清在线| 国偷自产av一区二区三区| 91精品视频在线播放| 久久99久久亚洲国产| 欧美日韩水蜜桃| 国产精品福利在线| 中国女人久久久| 搞av.com| 一本色道亚洲精品aⅴ| 多野结衣av一区| 久久久久国产视频| 亚洲一区二区三区四区五区午夜 | www.色综合.com| 超碰在线电影| 日韩电影免费观看在线观看| 日韩高清一级| 亚洲一区二区三区精品动漫| ●精品国产综合乱码久久久久| 国产又色又爽又黄刺激在线视频| 欧美一级淫片videoshd| 国内精品伊人久久久久av一坑| 中文字幕视频在线免费| 正在播放欧美一区| 在线精品福利| 羞羞在线观看网站| 国产视频精品va久久久久久| 久久91麻豆精品一区| 欧美一级黄色录像片| 日韩欧美在线免费观看| 日韩三级一区| 蜜桃视频日韩| 亚洲国产sm捆绑调教视频| 日韩专区视频| 蜜桃91精品入口| 亚洲国产日韩a在线播放| 福利一区和二区| 欧美日本亚洲| 一本一道久久a久久精品综合蜜臀| 日本在线成人| 日本三级福利片| 9191久久久久久久久久久| 欧美猛男同性videos| 青青艹视频在线| 亚洲国产一区自拍| 国产欧美一区二区三区国产幕精品| 97在线观看免费观看| 欧美精品久久久久久久| 成人午夜在线视频| 牛牛精品一区二区| 久久久久久久久一区二区| 天天操天天干天天综合网| 天堂成人娱乐在线视频免费播放网站 | 羞羞污视频在线观看| 91亚洲va在线va天堂va国| 国产精品免费av| 日本超碰一区二区| 国产第一页视频| 久久精品视频在线观看| 久久精品国产99| 日本色护士高潮视频在线观看| 超碰在线97av| 色视频一区二区| 亚洲91视频| 神马亚洲视频| caoporen国产精品| 91福利在线免费观看| 精品成人一区| 91porn在线观看| 久久久久免费网| 欧美xxxxx牲另类人与| 日本成人超碰在线观看| 2018av在线| 免费的一级黄色片| 色婷婷久久av| 久久精品视频一区二区三区| 成人污污视频| 不卡的av中文字幕| 久久久久国产视频| 亚洲免费观看在线观看| 欧美激情偷拍自拍| 日韩三级影院| 亚洲一区二区三区在线观看视频| 亚洲成人久久网| 国产一区二区三区香蕉| 国产成人a视频高清在线观看| 777米奇影视第四色| 97视频在线观看免费高清完整版在线观看 | 亚州色图欧美色图| 91亚洲午夜在线| 欧美无人高清视频在线观看| 香蕉精品999视频一区二区 | 欧美视频中文一区二区三区在线观看| 欧美精品九九| 欧美精品videossex少妇| 亚洲一区免费看| xx视频.9999.com| 国产精品久久免费看| 欧美激情理论| 毛片在线网址| 久久久久久久久久久免费视频| 热久久视久久精品18亚洲精品| 精品久久久久久久中文字幕 | av电影在线免费| 精品久久一二三| 热门国产精品亚洲第一区在线| 欧美性猛交xxxx偷拍洗澡| 久久久久99| 亚洲免费看片| 在线资源免费观看| 婷婷精品国产一区二区三区日韩| 色婷婷**av毛片一区| 亚洲一区二区三区四区五区黄 | 99re热视频精品| 久久神马影院| 激情aⅴ欧美一区二区欲海潮| 五月婷婷丁香综合网| 99精品99久久久久久宅男| 亚洲视频777| 亚洲高清久久久| 激情综合网天天干| 久草成人在线| 国产传媒在线观看| 国产一级黄色电影| 亚洲精品在线观看免费| 欧美激情国产精品| 日韩欧美一区二区三区在线| 国产色产综合产在线视频| 国产欧美精品| 日本午夜精品久久久| 国产乱色在线观看| 91福利国产成人精品播放| 久久久亚洲综合网站| 色综合色综合久久综合频道88| 91精品国产综合久久久久久久久久| 中文字幕一区二区三中文字幕| 久久国产精品免费| 欧美永久精品|