步驟1:準備一個 Flask 應用
首先,我們需要有一個正在運行的 Flask 應用。在本例中,我們假設您已經使用 flask 框架創建了一個名為 App.py 的 Python/ target=_blank class=infotextkey>Python Web 應用程序,同時有靜態資源目錄 static 和模板文件目錄 templates 如下所示:
./
├── app.py
├── requirements.txt
├── static/
│ ├── css/
│ ├── img/
│ └── js/
└── templates/
├── login.html
├── logging.html
├── yunwei.html
├── 404.html
└── weixin.html
flask應用安裝自己需求進行開發,基本框架如下:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello, World!'
if __name__ == '__mAIn__':
app.run()
當您啟動該應用后,在命令窗口中應該看到類似以下的信息表示 Flask 應用服務已經成功啟動:
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
請確保您的應用已正確運行后開始下面步驟。
步驟2:創建 Dockerfile
在此步驟中,我們將創建一個 Dockerfile 文件來定義 Docker 鏡像的構建過程。
在項目根目錄下創建一個名為 Dockerfile 的文件,并添加以下內容:(Dockerfile文件與app.py同目錄)
# 指定要使用的基礎鏡像
FROM python:3.9-slim-buster
# 將應用復制到容器中
WORKDIR /app
COPY . /app
# 安裝應用所需的依賴項
RUN pip install --no-cache-dir -r requirements.txt
# 暴露應用程序的端口號
EXPOSE 5000
# 設置啟動命令
CMD ["python", "app.py"]
讓我們一步步解析這個 Dockerfile 文件:
-
第 1 行指定了我們將從哪個基礎鏡像開始構建。在這里,我們選擇了 Python 3.9 版本的 slim-buster 鏡像。 -
第 3-4 行將運行目錄切換為 /app 并將當前應用的所有文件復制到容器中的 /app 目錄下。 -
第 6 行使用 pip 命令安裝 Flask 應用程序所需的所有依賴項,其中包括 Flask 庫和其他任何必要的庫(通過 requirements.txt 文件指定,在代碼倉庫中創建這個文件并將所有依賴項列在其中)。 -
第 8 行使用 EXPOSE 指令在容器中公開 Flask 應用程序的端口 5000。 -
最后一行使用 CMD 指令以類似于在本地上運行 Flask 類型的命令開始在容器中運行應用。
步驟 3:構建 Docker 鏡像(以阿里云鏡像倉庫為例)
一旦有了 Dockerfile 文件,我們就可以使用 docker build 命令將其轉換為一個可重復的 Docker 鏡像。確保您當前位于包含 Dockerfile 文件的目錄中,并執行以下命令:
docker build -t your-repository-url/your-image-name:tag .
該命令將使用 Dockerfile 創建一個名為 your-image-name、帶有 tag 標簽的本地鏡像,并上傳到您配置好的 Docker Registry 中,這里以阿里云鏡像倉庫為例。
請注意將 your-repository-url 替換為您的具體倉庫 URL 名稱, your-image-name 為您的鏡像名稱, tag 為版本號或標識符(如 latest)。
在運行完這個命令后,如果一切順利 Docker 將會依照 Dockerfile 構建出一個新的鏡像并在其中部署我們的 Flask 應用。最終命令示例如下:
docker build -t registry.cn-hangzhou.aliyuncs.com/your-repository/your-image-name:tag .
步驟 4:上傳到阿里云鏡像倉庫
阿里云提供了自己的容器鏡像服務(容器 registry),現在將打包好的 Docker 鏡像上傳到阿里云倉庫中:
4.1:Docker 鏡像登錄
使用 Docker 命令行工具,輸入以下命令以在本地登錄到您的阿里云賬號:
docker login --username=<userId> registry.cn-hangzhou.aliyuncs.com
當您輸入密碼并通過身份驗證后,您將得到類似以下輸出:
Login Succeeded
4.2:Push 到阿里云鏡像倉庫
您已經擁有一個 Docker 鏡像,接下來只需要將它 push 到阿里云鏡像倉庫:
docker push registry.cn-hangzhou.aliyuncs.com/your-repository/your-image-name:tag
其中 your-repository 是您創建的阿里云命名空間名稱,your-image-name 和 tag 和之前創建鏡像時保持一致。
上傳成功后執行該命令后將應用程序的完整鏡像保存到阿里云容器鏡像服務。

最后,請注意在構建和推送 Docker 鏡像時指定合適的版本控制 tag,并在推送后確保您已經停止并刪除了本地。

4.3:以后可以直接拉取鏡像隨時使用,做到一次構建到處使用。






