- 1、本文档共2页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在Docker上部署Python的Flask框架的教程--第1页
在Docker上部署Python的Flask框架的教程
本⽂中,我将尝试展⽰⽤Docker开发python应⽤(主要是Web应⽤)的可⾏⽅法。虽然我本⼈专注于Python的Flask微框架,
但本⽂⽬的是演⽰如何通过Docker更好地开发和共享应⽤程序,(由任何语⾔和框架开发的应⽤程序)。Docker通过封装依
赖项,⼤⼤减少了开发环境和正式产品的差距。
⼤多数Python开发⼈员在开发中使⽤。它提供了⼀种易⽤的机制让应⽤程序使⽤⾃⼰专⽤的依赖项,这些依赖项可能与在其
它应⽤程序或操作系统存在冲突(尤其是不同的Pyhton版本,还有不同的库版本等等)。个⼈⽽⾔,我对virtualenv⼀直没有
太⼤兴趣,原因如下:
1. 我经常忘记启⽤它,或者在切换⼯程时忘记切换它,这会遇到含糊的出错信息,另⼈倍感困惑。
2. 它⽆法提供“纯粹的”隔离,只能是Python级别的隔离(系统库和⾮python的依赖项仍然会出问题)。
3. 我通常不想在正式产品中运⾏它,这就意味着在开发环境和正式产品的不⼀致。
4. 它让⼈感觉有点“⿊客”作法:它是依靠修改脚本和设置新路径实现的。
(查看了解更多为什么你可能不想⽤virtualenv )
那么,怎么做Docker才能变得更好呢?Docker本质上提供了⾮常轻量化的VMs (在说法上可以称为“容器”),我们可以使⽤其
创建⼀个⾼标准隔离并能⼤⼤减少失配的开发和产品环境。(如果你不熟悉Docker,却还想学习更多,你可以查看我在爱丁
堡技术座谈会上)。
当我们建⽴⼀个⼩型的可视化Web APP ,我⾃⼰和Mark Coleman使⽤这种⽅法()。这(⾥⾯)划出了⼀个基本镜像安装
Python 2.7,还有⼀些Flask管理以及PostgreSQL的内容。我会依据这个镜像去开发⼀个hello world 的Web应⽤。我假设你是
在Linux上开发,并且你已经有git ,还安装了Docker,MacOS的指令应该⾮常类似。通过克隆和建⽴基本镜像开始:
$ git clone /mrmrcoleman/python_webapp
$ docker build -t python_webapp .
现在,我们需要为容器中添加⼀些代码并详细写明。我们打算新建⼀个仅仅指向Docker镜像的项⽬来完成这项⼯作,⽽不是
直接修改之前的项⽬。
创建⼀个具有下列结构的新项⽬:
复制代码代码如下:
├── Dockerfile
├── example_app
│ ├── app
│ │ ├── __init__.py
│ │ └── views.py
│ └── __init__.py
├── example_app.wsgi
在example_app/app/_init_.py 中写⼊:
from flask import Flask
app = Flask(__name__)
from app import views
使另⼀个_init_.py为空。在views.py 中写⼊:
from app import app
@app.route(/)
@app.route(/index)
def index():
return Hello, World!
以上就是我们的⼀个hello world应⽤的最⼩flask版本。我在中也使⽤过类似的代码,所以如果你刚刚接触Flask或者Python,
你可以根据上述提到的教程,使⽤Docker⽽不是virtualenv继续学习。
在Docker上部署Python的Flask框架的教程--第1页
在Docker上部署Python的Flask框架的教程--第2页
为了使之运⾏在Docker容器内部,我们还需要做⼀些操作。在我们的实例Apache服务器中,example_app.wsgi ⽂件包含了连
接Python代码和web服务器的指令。该⽂件应当包含下列内容:
import site
site.addsitedir(/opt/example_app/)
from app import app as application
最终,我们需要⼀个Dockerfile来构建容器并运⾏容器。在我们的实例中,它看起来是这样的:
FROM python_webapp
MAINTAINER amouat
ADD example_app.wsgi /var/www/flaskapp
文档评论(0)