Python快速入门(镜像)
本文主要演示如何在本地创建镜像,并使用该镜像在蜂巢上部署 Python 应用。示例采用 Python 的 Flask 框架构建了一个简单的 Web 应用。
目录
安装 Docker 工具
在Windows 或 Mac 环境下 ,安装 Boot2docker、DockerToolBox 等工具。
具体请参考:Install Docker Engine。
注:Docker 客户端版本要求 1.7 及以上。
创建 Python 应用
本地创建 Python 应用 hello.py,且该应用的源码如下所示:
#-*- coding: utf-8 -*- from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__": app.run(host="0.0.0.0", port=80)注意如下问题:
- Python 语言的缩进问题;
- IP 应指定为 0.0.0.0 (不要指定为 127.0.0.1 或 localhost,否则只能本机访问);
- 端口需要与服务部署时的负载均衡目的端口(默认 80)一致。
创建 Dockerfile
本地创建的 Dockerfile,具体内容如下所示,主要进行了如下操作:- 更新 Python 版本;
- 安装 Pip 与 Flask;
- 添加本地的 Python 应用(本示例为 hello.py)并执行。
FROM hub.c.163.com/nce2/python:2.7 # Sources RUN echo "deb https://mirrors.163.com/debian wheezy main non-free contrib" > /etc/apt/sources.list RUN echo "deb https://mirrors.163.com/debian wheezy-proposed-updates main contrib non-free" >> /etc/apt/sources.list RUN echo "deb-src https://mirrors.163.com/debian wheezy main non-free contrib" >> /etc/apt/sources.list RUN echo "deb-src https://mirrors.163.com/debian wheezy-proposed-updates main contrib non-free" >> /etc/apt/sources.list RUN \ apt-get update -y && \ apt-get remove -y python && \ apt-get install -y python RUN wget -q "https://bootstrap.pypa.io/get-pip.py" && \ python get-pip.py > /dev/null && \ pip install Flask ADD hello.py /root/hello.py WORKDIR /root/ CMD python hello.py
注意:此 Dockerfile 只能在 Windows 和 Mac 上面创建成功,在 Linux 系统上则会报错。
创建本地镜像
切换到 Dockerfile 所在的目录下,然后执行如下命令生成本地镜像:
docker build -t flaskdemo .
执行的过程如下图所示:
推送本地镜像
上传本地镜像至镜像仓库的方法请参考 如何推送本地镜像。
上传成功后,可在蜂巢的镜像仓库列表查看。
创建集群
上传镜像成功后,可利用自定义镜像创建容器或服务。对于一般的 Web 应用,蜂巢建议采用集群的方式进行创建,可以提供负载均衡的服务。
1. 登录蜂巢控制台;
2. 点击左侧导航菜单的「集群管理」;
3. 选择「自定义镜像」;
4. 选中本地推送的镜像,开始创建集群:
添加监听
在负载均衡实例中添加监听,具体操作请见 创建负载均衡。并且,负载均衡的目的端口号需与集群监听的端口号保持一致(负载均衡的端口号为对外暴露的端口)。
添加监听时选择需要关联的容器或集群,填写完相应信息,点击「立即添加」。
部署完毕
在负载均衡列表中查看对应实例的公网 IP :
在浏览器中输入该 IP 地址及设置的端口(本例设置为 80,故省略),即可访问部署的 Python 应用:
FAQ
- 为什么 flaskdemo 的容器创建成功之后,却无法运行?
- 使用上传的镜像创建容器时,出现「私有网 IP 绑定失败」时,是什么原因?
- 为什么服务创建成功以后,输入 IP 地址后出现以下界面?
检查 hello.py 文件是否输入错误,逻辑独立的语句前面不能留有空格。
可能是 hello.py 文件存在问题。
端口配置出现错误,端口应当设置成:源端口:80 目的端口:80。
支持文档
最后更新:2017-01-03 10:48:58