您的位置首页生活百科

如何在网易蜂巢发布部署Python网站

如何在网易蜂巢发布部署Python网站

的有关信息介绍如下:

如何在网易蜂巢发布部署Python网站

本文主要演示如何在本地创建镜像,并使用该镜像在蜂巢上部署 Python 应用。示例采用 Python 的 Flask 框架构建了一个简单的 Web 应用。

安装 Docker 工具

在Windows 或 Mac 环境下 ,安装 Boot2dcoker、DockerToolBox 等工具。 具体请参考:https://docs.docker.com/engine/installation/。

注: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 http://mirrors.163.com/debian wheezy main non-free contrib" > /etc/apt/sources.list

RUN echo "deb http://mirrors.163.com/debian wheezy-proposed-updates main contrib non-free" >> /etc/apt/sources.list

RUN echo "deb-src http://mirrors.163.com/debian wheezy main non-free contrib" >> /etc/apt/sources.list

RUN echo "deb-src http://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 .

执行的过程如下图所示:

推送本地镜像

上传本地镜像至镜像仓库的方法请参考https://c.163.com/wiki/index.php?title=如何推送本地镜像

上传成功后,可在蜂巢的镜像仓库列表查看。

创建集群

上传镜像成功后,可利用自定义镜像创建容器或服务。对于一般的 Web 应用,蜂巢建议采用集群的方式进行创建,可以提供负载均衡的服务。

1.登录蜂巢控制台;

2. 点击左侧导航菜单的「集群管理」;

3. 选择「自定义镜像」;

4. 选中本地推送的镜像,且负载均衡的目的端口号需与服务监听的端口号保持一致(负载均衡的端口号为对外暴露的端口),开始创建集群:

部署完毕

创建成功后,可通过集群列表查看公网 IP:

在浏览器中输入该 IP 地址及设置的端口(本例设置为 80,故省略),即可访问部署的 Python 应用:

FAQ

为什么 flaskdemo 的容器创建成功之后,却无法运行?

检查 hello.py 文件是否输入错误,逻辑独立的语句前面不能留有空格。

使用上传的镜像创建容器时,出现「私有网 IP 绑定失败」时,是什么原因?

可能是 hello.py 文件存在问题。

为什么服务创建成功以后,输入 IP 地址后出现以下界面?

端口配置出现错误,端口应当设置成:源端口:80 目的端口:80。