如何在網易蜂巢釋出部署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 wheezy main non-free contrib" > /etc/apt/sources.list

RUN echo "deb wheezy-proposed-updates main contrib non-free" >> /etc/apt/sources.list

RUN echo "deb-src wheezy main non-free contrib" >> /etc/apt/sources.list

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

執行的過程如下圖所示:

如何在網易蜂巢釋出部署Python網站

推送本地映象

上傳本地映象至映象倉庫的方法請參考 https://c.163.com/wiki/index.php?title=如何推送本地映象

如何在網易蜂巢釋出部署Python網站

上傳成功後,可在蜂巢的映象倉庫列表檢視。

如何在網易蜂巢釋出部署Python網站

建立叢集

上傳映象成功後,可利用自定義映象建立容器或服務。對於一般的 Web 應用,蜂巢建議採用叢集的方式進行建立,可以提供負載均衡的服務。

1. 登入蜂巢控制檯;

2. 點選左側導航選單的「叢集管理」;

3. 選擇「自定義映象」;

4. 選中本地推送的映象,且負載均衡的目的埠號需與服務監聽的埠號保持一致(負載均衡的埠號為對外暴露的埠),開始建立叢集:

如何在網易蜂巢釋出部署Python網站

部署完畢

建立成功後,可通過叢集列表檢視公網 IP:

如何在網易蜂巢釋出部署Python網站

在瀏覽器中輸入該 IP 地址及設定的埠(本例設定為 80,故省略),即可訪問部署的 Python 應用:

如何在網易蜂巢釋出部署Python網站

FAQ

為什麼 flaskdemo 的容器建立成功之後,卻無法執行?

檢查 hello.py 檔案是否輸入錯誤,邏輯獨立的語句前面不能留有空格。

使用上傳的映象建立容器時,出現「私有網 IP 繫結失敗」時,是什麼原因?

可能是 hello.py 檔案存在問題。

為什麼服務建立成功以後,輸入 IP 地址後出現以下介面?

埠配置出現錯誤,埠應當設定成:源埠:80 目的埠:80。

如何在網易蜂巢釋出部署Python網站

相關問題答案