如果你是 Docker 和容器的新手,学习在 Docker 上部署 Python Flask API 应用程序是一个很好的开始。Docker 可以使用轻量级技术和安全性来容器化应用程序,实现快速部署。
在本教程中,你将学会如何在 Docker 容器上设置和部署 Python Flask API 应用程序。
准备好了吗?开始部署吧!
先决条件
如果你想一步步跟着进行,你需要安装以下软件:
- 已安装 Docker 的 Ubuntu 机器。本教程使用的是 Ubuntu 18.04.5 LTS 版本,Docker 版本为 v19.03.8。
- 已在 Ubuntu 机器上安装 Python v3.9 或更高版本。本教程将使用 Ubuntu 机器上的 Python v3.9.2。
- 在用于测试本教程中的 Ubuntu 机器上安装 Elinks 包。
創建一個Python Flask API應用程序(GET和POST API)
首先創建一個Python Flask應用程序。Flask是一個輕量級的WSGI微Web應用程序框架,用Python編寫。Flask提供了方便的工具和功能,用於創建Python Web應用程序。
在創建Python Flask應用程序之前,您需要安裝Python Flask和Python虛擬環境,Flask將在其中運行應用程序。
1. 使用您喜歡的SSH客戶端登錄到Ubuntu機器。
2. 接下來,運行以下命令創建一個名為~/docker_python_flask_demo的目錄並切換到該目錄。該目錄將保存Python和Docker運行應用程序所需的所有文件。
3. 執行下面的pip
命令install
一個Flask所需的Python虛擬環境(virtualenv
)。Python虛擬環境提供自己的Python二進制文件和每個應用程序安裝的包,以避免與其他應用程序發生衝突。

4. 執行下面的virtualenv
命令創建並激活虛擬環境使用venv
模塊。

5. 現在,運行以下命令使用pip
包管理器安裝Python flask
包。
6. 在開始安裝或使用套件之前,執行以下命令以啟用虛擬環境中的套件。這會修改 VIRTUAL_ENV
環境變數,指向您的虛擬環境,並在路徑前置虛擬環境的 Python 二進位檔,以便執行正確的二進位檔。
7. 創建一個名為 requirements.txt 的檔案,定義 Flask 應用程式的相依性,如下所示。
8. 創建一個文本檔 ~/docker_python_flask_demo/app.py,並使用以下 Python 代碼填充檔案。
以下的 Python 代碼導入 Python flask
類別並創建一個名為 app
的類別實例。 app
類別實例包含兩個在使用者在 /login
頁面發送請求時執行的 login()
函數。
然後執行 success()
函數,顯示歡迎訊息 “name-of-the-user” 在瀏覽器上。
9. 創建一個名稱為 ~/docker_python_flask_demo/form.html 的文件,並複製/粘貼下面的代碼。
運行下面的 HTML 代碼會創建一個帶有兩個輸入的表單; 一個是文本,用於提供您的名字,另一個是提交按鈕。
只要提供用戶名並點擊提交按鈕,就會發送一個 post 請求,Flask 運行另一個函數並在http://localhost:5000/success/<username>上打開一個新的網頁。
10. 最後,運行下面的 Python
命令來驗證應用程序(app.py
)在本地系統上運行正常。
正如您在下面看到的,該應用程序在 Ubuntu 機器上成功運行,但在 Docker 上並非如此。您將在以下部分中啟動相同的應用程序在 Docker 上運行。

創建一個 Dockerfile 以部署 Python Flask API 應用程序
您剛創建並驗證了 Python Flask 應用程序在本機上運行正常。但在將應用程序部署到 Docker 之前,您將首先創建一個Dockerfile,定義構建Docker image的所有指令。
在~/docker_python_flask_demo目錄中創建一個名為 Dockerfile 的文件,並將下面的內容複製/粘貼到 Dockerfile 中。
Docker 將使用此 Dockerfile 執行所有必要的指令或命令,以在基礎映像(ubuntu:18.04
)上構建新的 Docker 映像。
現在,運行下面的tree
命令,以驗證在工作目錄中(~/docker_python_flask_demo)包含了運行 Python Flask 應用程序所需的所有文件。

為 Python Flask API 應用程序構建 Docker 映像
現在,您已經擁有部署 Python Flask 應用程序所需的文件,但除非構建映像,否則這些文件將無法執行任何操作。您將運行docker build
命令,根據在 Dockerfile 中設置的指令構建基於這些指令的 Docker 映像。
執行以下命令以在工作目錄(。
)中構建 Docker 映像。此命令將映像標記為版本 1(:v1
)。

現在,執行以下命令以列出所有可用的映像。
下面,您可以看到返回的各種屬性,例如REPOSITORY。請注意REPOSITORY名稱為flask-image,並帶有版本標籤(v1),如下所示。

在 Docker 容器中運行 Python Flask 應用程序
創建 Docker 映像後,您現在可以在 Docker 容器中運行 Python 閃存應用程序。 Docker 容器將代碼及其依賴項打包起來,以快速運行應用程序。
1. 執行以下docker run
命令執行以下操作:
- 以分離模式(
-d
)啟動容器,使其作為後台進程運行並在創建時返回控制台輸出。 - 將 Docker 主機端口(
-p 5000:5000
)映射到容器的端口。 - 啟動 Docker 容器(
flask-image:v1
)
2. 接下來,執行下面的docker
命令來列出 Docker 引擎中的所有容器。驗證 Docker 是否成功建立了容器。

3. 最後,執行下面的命令在 Ubuntu 機器上使用 elinks 打開你的網頁瀏覽器。
該命令在終端上打開網頁瀏覽器,並提示輸入名字,如下所示。
輸入你的名字並按下提交按鈕。

4. 如你所見,按下提交按鈕後,登錄功能將重定向到 Flask 應用程序中的成功功能。

結論
本教程旨在幫助你完成使用 Docker 鏡像設置 Python Flask API Docker 容器的過程。你也了解了如何使用 Dockerfile 啟動 Python Flask 容器,這使你能夠編輯和構建自定義容器。
那麼,你還有什麼其他應用程序計劃部署在 Docker 容器上?也許是一個 Docker MongoDB 容器?