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

在Docker中運行一個Python的Web應(yīng)用

開發(fā) 后端 前端
幾周前, Elastic Beanstalk聲明在AWS云中配置和管理Docker容器。在本文中,我們通過一個簡單的注冊表單頁面應(yīng)用去理解Docker部署過程,該表單使用Elastic Beanstalk Python環(huán)境。

幾周前, Elastic Beanstalk聲明在AWS云中配置和管理Docker容器。在本文中,我們通過一個簡單的注冊表單頁面應(yīng)用去理解Docker部署過程,該表單使用Elastic Beanstalk Python環(huán)境。

關(guān)于注冊表單應(yīng)用

幾個月之前,我們就已經(jīng)開發(fā)完這個應(yīng)用并且發(fā)表在博客上。有4部分視頻和一篇文章“Using DynamoDB and SNS with Elastic Beanstalk in any Supported AWS Region”。今天,我們將在這部分內(nèi)容之上進(jìn)一步的開發(fā)和討論我們怎樣部署在在Docker和Elastic Beanstalk環(huán)境中。本文將分成4個部分講解。

參考資源

原始的Python應(yīng)用(非Docker化)源代碼托管在GitHub上(master版本),網(wǎng)址為https://github.com/awslabs/eb-py-flask-signup/tree/docker。Docker化的版本在docker版本中,網(wǎng)址為:https://github.com/awslabs/eb-py-flask-signup/tree/docker

如果你喜歡代碼和不同版本間的比對,你可利用GitHub對比功能查看兩個版本的區(qū)別。網(wǎng)址為https://github.com/awslabs/eb-py-flask-signup/compare/master...docker。你也可以查看Docker化后添加的每個文件或者每行代碼。

Docker化階段1:添加Dockerfile文件

首先從GitHub上克隆源代碼:

  1. $> git clone git@github.com:awslabs/eb-py-flask-signup.git  
  2. $> cd eb-py-flask-signup  
  3. $> git checkout master  

通過查看目錄內(nèi)容,知道這是一個簡單的Python應(yīng)用,使用Flask框架,Boto和一些其他的依賴(在requirements.txt中聲明了該依賴),其中Boto用于DynamoDB和SNS的互動。

足夠簡單,以至于我們只需創(chuàng)建一個Dockerfile,構(gòu)建一個適用于運行該應(yīng)用的鏡像。Dockerfile和其他應(yīng)用源均放在目錄中(即,和requirements.txt, application.py等等放在一塊)。

  1. FROM ubuntu:12.10 
  2.  
  3. # Install Python Setuptools  
  4. RUN apt-get install -y python-setuptools  
  5.  
  6. # Install pip  
  7. RUN easy_install pip  
  8.  
  9. # Add and install Python modules  
  10. ADD requirements.txt /src/requirements.txt  
  11. RUN cd /src; pip install -r requirements.txt  
  12.  
  13. # Bundle app source  
  14. ADD . /src  
  15.  
  16. # Expose  
  17. EXPOSE  5000 
  18.  
  19. # Run  
  20. CMD ["python""/src/application.py"]  

Docker化階段 2 :在本地測試

雖然這個應(yīng)用程序需要一個DynamoDB表和SNS主題來完成全部功能,不過我可以但沒有測試它們: 

首先, 構(gòu)建 Docker 鏡像:

  1. $> docker build -t eb-py-sample . 

最后 (直接到可以使用后!),通過構(gòu)建好的image運行一個container (映射 container 的5000端口到主機的8080端口, 并且按照下面的代碼設(shè)置一些環(huán)境變量):

  1. $> docker run -d \  
  2.      -e APP_CONFIG=application.config.example \  
  3.      -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \  
  4.      -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \  
  5.      -p 8080:5000 \  
  6.      eb-py-sample  

在 OS X上,我打開 http://localhost:8080鏈接,下圖顯示的就是我的一個應(yīng)用程序!

 

邊欄:我們使用-e選項來傳遞一些選項: 

  1. APP_CONFIG: 這個程序使用這個選項加載指向)它的配置文件. 默認(rèn)我們指定一個默認(rèn)的配置文件。 你可以創(chuàng)建一個 DynamoDB 表和SNS 主題并且將他們添加到這個配置文件中,以使你的應(yīng)用程序在本地開發(fā)的時候可以更完美的工作。
  2. AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY: 這個應(yīng)用程序使用 Boto 來連接 DynamoDB 和SNS, 并且 Boto 使用這些環(huán)境變量來認(rèn)證請求以上服務(wù)。這些設(shè)置僅僅是為了本地開發(fā)。 當(dāng)我們向 Elastic Beanstalk 部署時將使用統(tǒng)一身份和訪問控制方案(IAM) 角色(Roles)。

Docker 化階段 3: 修改  .ebextensions

我們的應(yīng)用程序擁有一個特殊的文件夾 .ebextensions,里面有個 setup.config 文件。我們使用這個文件通知來 Elastic Beanstalk 創(chuàng)建我們程序所需要的 DynamoDB 表和 SNS 主題, 同時他會創(chuàng)建一個配置文件   /var/app/app.config  ,這個文件包含了我們剛才創(chuàng)建的 DynamoDB 表和 SNS 主題的名字。

這個文件中還有一些特殊的地方是他擁有特殊的在 Elastic Beanstalk(相對于 Docker)中的 Python的環(huán)境類型(python版本?) ,我們需要把他們移除掉:

修改 files 的成員,并且移除掉 owner 和 group 鍵,使他看起來像下面的這些:

  1. files:  
  2.   "/var/app/app.config":  
  3.     mode: "000444" 
  4.     content: |  
  5.       AWS_REGION = '`{ "Ref" : "AWS::Region"}`' 
  6.       STARTUP_SIGNUP_TABLE = '`{ "Ref" : "StartupSignupsTable"}`' 
  7.       NEW_SIGNUP_TOPIC = '`{ "Ref" : "NewSignupTopic"}`' 

修改 option_settings ,刪除靜態(tài)文件映射。使他看起來像下面的這些:

  1. option_settings:  
  2.   "aws:elasticbeanstalk:customoption":  
  3.      "AlarmEmail" : "nobody@amazon.com" 
  4.   "aws:elasticbeanstalk:application:environment":  
  5.     "APP_CONFIG""/var/app/app.config" 
  6.     "FLASK_DEBUG""false" 
  7.     "THEME""flatly" 

檢查一下setup.config文件,確認(rèn)前面的所有變化是否正確,或者可以參考托管在GitHub上的setup.config

Docker化階段4: 部署到Elastic Beanstalk

我已經(jīng)建立并測試了我的本地容器,移除了一些.ebextensions,它是特定的Elastic Beanstalk Python環(huán)境,我已經(jīng)信心滿滿地準(zhǔn)備部署它了!

我創(chuàng)建了一個文件,名字叫做Dockerrun.aws.json,與此類似,我創(chuàng)建了Dockerfile。這個文件將會告訴Elastic Beanstalk 怎么去運行Docker容器并且它看起來像是這樣的(這個文件的詳細(xì)信息,請參閱下方)。

  1. {  
  2.   "AWSEBDockerrunVersion""1",  
  3.   "Volumes": [  
  4.     {  
  5.       "ContainerDirectory""/var/app",  
  6.       "HostDirectory""/var/app" 
  7.     }  
  8.   ],  
  9.   "Logging""/var/eb_log" 
  10. }  

關(guān)于Dockerrun.aws.json

Volumes成員將會在EC2上映射/var/app實例到容器上的/var/app。Docker容器通過訪問app.config文件并通過創(chuàng)建.ebextensions/setup.config得以讓app在容器上運行。Logging成員告訴Elastic Beanstalk我們的Docker app將會記錄日志到/var/eb_log到容器中。在控制臺里,無論什么時候你點擊Snapshot Logs或者如果你啟用自動日志輪轉(zhuǎn),Beanstalk將會自動推送日志/var/eb_log到這個目錄。

我將提交我的修改,并且使用 git archive 來生成一個zip文件以便部署到Elastic Beanstalk上(你可以使用zip工具、Finder或Windows 資源管理器來打包):

  1. $> git add Docker* && git commit -am "Dockerized"  
  2. $> git archive --format=zip HEAD > eb-py-flask-signup.zip  

之后,我通過 Elastic Beanstalk Management Console 來部署生成后的zip包

當(dāng)我的環(huán)境通過之后,我可以訪問它,確保它可以正常工作:

 

我還保存了環(huán)境日志的快照:

[[113292]]

由于我之前往Dockerrun.aws.json文件中添加了Logging 成員,所以,容器中輸出到/var/eb_log中的日志可以被定向到S3,并且我可以在瀏覽器中訪問它們:

 

接下來

在下一篇文章中,我將會使用 eb 命令行工具直接在命令行中部署這個Dockerized程序,不需要瀏覽器或管理控制臺!

相關(guān)資源

英文原文:Dockerizing a Python Web App

譯文鏈接:http://www.oschina.net/translate/dockerizing-a-python-web-app

責(zé)任編輯:林師授 來源: 開源中國社區(qū) 編譯
相關(guān)推薦

2014-11-25 14:04:59

DockerDocker Nodeweb應(yīng)用部署

2015-02-06 11:04:10

DockerAWS移動應(yīng)用開發(fā)測試

2023-05-10 08:05:41

GoWeb應(yīng)用

2021-07-31 12:58:53

PodmanLinux虛擬機

2014-10-15 11:01:02

Web應(yīng)用測試應(yīng)用

2009-02-03 10:19:45

2011-05-18 16:02:08

XML

2021-09-12 12:00:12

瀏覽器LinuxWeb 應(yīng)用

2020-10-11 20:54:39

Python開發(fā)Docker

2020-11-20 10:50:01

Docker容器

2011-03-10 10:45:47

Azure“Hello Worl

2021-08-28 10:06:29

VueJavascript應(yīng)用

2011-11-21 18:19:20

Web iMC

2013-05-13 09:31:29

Web App開發(fā)WebApp

2023-09-15 10:10:05

R 語言

2017-06-08 15:53:38

PythonWeb框架

2015-01-20 13:46:31

Java EEDockerDocker部署

2021-07-30 20:25:04

pipxPython編程語言

2020-09-29 07:24:14

Python字典數(shù)據(jù)

2022-02-10 22:34:51

對象JVM收集器
點贊
收藏

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

热久久这里只有| 日韩视频永久免费| 国产一级二级三级精品| 亚洲一区二区三区免费| 国产亚洲综合色| 国产精品av在线播放| 日日夜夜精品| 亚洲美女精品一区| 五月婷婷开心综合| 国产精品久久久久永久免费观看 | 日本精品国语自产拍在线观看| 精品成人自拍视频| 日韩成人在线观看| 无遮挡爽大片在线观看视频| 色婷婷亚洲精品| 男人舔女人下面高潮视频| 久久精品国产在热久久| 亚洲综合激情五月| av毛片午夜不卡高**水| 2023国产精品久久久精品双| 亚洲精品成人久久电影| 中文字幕亚洲乱码| 国产在线乱码一区二区三区| 国产成人精品一区二区三区| 欧美13一16娇小xxxx| 亚洲美腿欧美偷拍| 天堂资源在线亚洲视频| 精品盗摄女厕tp美女嘘嘘| 亚洲精品福利资源站| 国产黄色网页| 国产91精品一区二区麻豆网站| 欧美精品videosex极品1| 成人日日夜夜| 久久精品亚洲一区| 国产精品白浆| 久久久国产精彩视频美女艺术照福利| 亚洲女优视频| 亚洲精品一二三区| 麻豆影视在线观看_| 国产午夜精品视频| 久久精品免费一区二区三区| 一本久道久久综合狠狠爱亚洲精品| 日韩精品不卡一区二区| 一区二区三区四区欧美| 亚洲日本在线观看| caoporn国产精品免费视频| 亚洲欧洲在线播放| 精品国产sm最大网站免费看| 午夜精品一区二区三区四区| 日韩电影免费网站| 快播日韩欧美| 国产精品一区久久久久| 国产www.大片在线| 国产午夜一区二区| 九九免费精品视频在线观看| 欧美一级特黄a| 91精品国产入口| 成人久久网站| 亚洲xxx自由成熟| 久久理论电影网| 色哟哟免费在线观看| 婷婷综合久久一区二区三区| 99精品视频在线免费播放| 国产成人黄色网址| 91久久精品美女高潮| 91精品国产综合久久福利| 欧美电影免费观看| 精品视频一区在线| 日韩亚洲欧美综合| 女人av一区| 日韩影院一区| 久久久精品国产一区二区| 色综合久久中文综合久久牛| 福利片在线看| 三级短视频在线| 国产精品久久久久久久久久久久冷| 久久裸体视频| 黄色在线播放| 欧美高清不卡在线| 99精品欧美一区二区三区小说| 888av在线视频| 精品欧美一区二区精品久久| 亚洲日韩第一页| 中文字幕高清不卡| 一区二区三区视频在线观看视频| 欧洲久久久久久| 一区二区三区视频免费| 国产精品不卡一区| 欧美美女在线| 日本丰满少妇黄大片在线观看| 日本熟妇人妻中出| 日韩精品在线观看视频| 日本在线观看不卡视频| 99reav| 69国产精品成人在线播放| 亚洲人成五月天| 成人免费在线观看入口| 久久超碰97人人做人人爱| 成年人视频免费在线播放| 欧美交换配乱吟粗大25p| 国产在线精品一区二区三区| 国产欧美精品一区二区色综合 | 男女网站在线观看| 91精品国产91久久久久久吃药| 中文字幕日韩精品一区| 日本久久一二三四| 免费网站成人| 日本精品久久电影| 亚洲高清免费观看高清完整版在线观看| 日韩高清电影免费| 4438x成人网全国最大| 91成人在线视频观看| 久久综合久久八八| 日韩欧美一区二区在线视频| 亚洲一级在线观看| 国产成人激情av| 精品欧美午夜寂寞影院| 国产成人高清精品免费5388| 国内外免费激情视频| 日韩精品在线视频| 亚洲综合国产激情另类一区| 亚洲欧洲动漫| 国产二区视频在线| 国产精美视频| 日本免费专区| 国产精品久久久久av电视剧| 日韩精品免费一区| 夜夜嗨av一区二区三区免费区 | 99re国产精品| 粉嫩欧美一区二区三区 | 国产精品日韩一区二区| 亚洲一区二区三区在线播放| 在线中文字幕电影| 日本精品一区在线观看| 日韩免费中文专区| www.亚洲天堂| 一个色综合网站| 国产一区二区不卡老阿姨| 青草伊人久久| 国产污视频在线| 中国黄色片免费看| 午夜老司机精品| 久久国产成人精品| 污视频网站在线看| 77777亚洲午夜久久多人| 亚洲色图在线播放| 欧洲成人一区| 中文字幕在线观看网站| 青草视频在线观看视频| 日韩免费中文字幕| 久久国产天堂福利天堂| 欧美精选一区二区| 亚洲视频香蕉人妖| 99精品桃花视频在线观看| 精品国产一区二区三区久久久樱花| 黄色在线看片| 精品51国产黑色丝袜高跟鞋| jizz18女人| 无码少妇一区二区三区芒果| 加勒比成人在线| 激情婷婷综合网| 九一免费在线观看| 欧美日韩大片一区二区三区| 欧美一级片免费在线| 欧美日韩中文字幕| 亚洲免费综合| 网红女主播少妇精品视频| 99九九久久| 嫩草影视亚洲| 亚洲一区二区高清| 97精品国产97久久久久久免费| 日韩主播视频在线| 91成人抖音| 欧美jiizzhd精品欧美| 免费观看成人高| zzijzzij亚洲日本成熟少妇| 一区二区三区日本| 日本1级在线| 一个人看的www一区| 日本人妖在线| 欧美xxxx免费虐| 黄网站在线免费| 久久精品视频观看| 牛牛视频精品一区二区不卡| 国产日韩在线观看视频| 欧美成人黑人| 日本a口亚洲| 欧美日韩一区二区视频在线观看| 国产亚洲欧洲高清一区| 亚洲一区二区在线免费看| 美美哒免费高清在线观看视频一区二区| 亚洲精品一区在线| www久久日com| 女生裸体视频网站免费观看| 91九色国产ts另类人妖| 成人a视频在线观看| 菠萝蜜影院一区二区免费| 欧美日韩国产天堂| 亚洲乱码中文字幕| 国产成人精品免费视频网站|