使用 Docker 作为 Python 开发环境(2)

现在我们运行了web服务器,已经非常接近我们在产品中使用的东西了(我有意的使用Apache来做这点而不是Python默认的web服务器)。我们通过从主机向容器映射的方式向容器中注入代码;也可以在Dockerfile命令行中是用ADD来添加代码,但那样的话当我们队代码进行改动时,每次都需要重新构建容器。

然而,这仍然不是很好 ;开发中我们真的希望使用很大程度上帮助我们调试的Python web服务器。该高兴的是我们不用对Dockerfile进行任何修改。在example_app文件从创建一个run.py文件开始,按照一下内容:

!flask/bin/python from app import app

app.run(debug = True, host='0.0.0.0')

这将启动Python的带调试的web服务器并监听所有连接,我们也能从容器外访问。现在用下列命令重启容器:

1

 

$ docker run -p 5000:5000 -v $(pwd)/example_app:/opt/example_app/ -i -t example_app python /opt/example_app/run.py

 

你能看到网页又运行了。这次我们显式地提供运行的命令("python /opt/example_app/ryn.py"),它覆盖了Dockerfile中的CMD行的设置。现在如果编辑在主机上的源程序,就能马上看到网页上的改变。

让我们花点时间看看我们的收获:

一个运行在隔离容器中的web应用,容器完全封装了应用的Python依赖项和系统依赖项。

能够使用现有编辑器或IDE开发代码并直接查看变化,就像在本地编辑一样。

比以前更接近正式产品的运行环境。

没有使用virtualenv。

如果你想知道如何以这种方式建立程序发布的途径,可以看看Mark Coleman写的关于前面提到的可视化Web应用的文章

不幸的是,这一切还不完美。还有下列几个问题:

你可能仍会遇到需要使用virtualenv或其等价解决方案的情况,例如库的操作系统版本与你的程序所需版本间的冲突。

我们还没完全解决数据托管的问题,仍需做某些测试。

我假设的“产品”是一个Docker容器,但实际情况常常并非如此而且Docker托管本身也刚刚起步。

尽管如此,我仍然认为这向软件开发的更好未来迈了一大步,大大减轻了部署软件和管理依赖项的痛苦。

CentOS 7安装Docker V1.0

开源项目Docker,Red Hat新的虚拟化选择

dockerlite: 轻量级 Linux 虚拟化

Docker的搭建Gitlab CI 全过程详解

Docker 和一个正常的虚拟机有何区别?

在 Docker 中使用 MySQL

Docker 将改变所有事情

Docker安装应用(CentOS 6.5_x64)

Docker 的详细介绍请点这里
Docker 的下载地址请点这里

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/59fe4261349bd89bdc4670ac53ad9ee2.html