04 Python Flask 教學10 所有文章

實作 Dockerfile + flask 教學 (附GitHub完整程式)

Flask教學_實作dockerfile flask

本篇記錄實作 docker + flask 建立的過程,從 dockerfile 參數詳細介紹,到 build image,和透過 docker image 產生隔離的執行環境 container,並且使用 docker 運行 flask 網頁。

此篇的完整程式碼放置於 GitHub,歡迎 git clone 使用。

直接實作一個 Flask 的 dockerfile 試試吧!

▍Step 0 Flask 基礎設定

file
├── Dockerfile
├── main.py
└── requirements.txt

此次會使用到的 main.py ,內容如下:

from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():
    return 'Flask Dockerized'


if __name__ == "__main__":
    app.run(debug=True, host='0.0.0.0', port=8888)

此次會使用到的 requirements.txt,內容如下:

Click==7.0
Flask==1.1.1
itsdangerous==1.1.0
Jinja2==2.10.3
MarkupSafe==1.1.1
Werkzeug==0.16.0

▍Step 1 撰寫 dockerfile

基本上 Dockerfile 是由一行一行的指令列所組成,一行指令對 Image 來說就是一層的資料層(Layer),一個Image就是靠這樣一層一層的資料累加上去,最後才編譯出自己想要的映像檔,就像蓋房子一樣。

此次會使用到的 dockerfile,內容如下:

FROM python:3.7.2-stretch

WORKDIR /app

ADD . /app

RUN pip install -r requirements.txt

CMD python main.py

doclerfile 參數講解:

  • FROM:基底映像檔 (base image)
  • WORKDIR:建立工作目錄
  • ADD:複製指定的檔案、目錄或遠端檔案 URL,將其加入映像檔檔案系統中的指定位置。
  • RUN:每一個 RUN 指令會在現有映像檔之上加入新的一層,是在建立 (build) 映像檔的過程中會執行的指令。
  • CMD:一個 Dockerfile 中只能有一個 CMD 指令,CMD 則是在容器運行時所執行的指令。

Tip : 如果有多行 RUN 指令,建議可以這樣寫,避免創造過多的 layer

RUN command && \
    command2

Tip:想了解更多 dockerfile細節?以下文章是我覺得寫得比較清楚的,推薦給大家

▍Step 2 將 dockerfile 打包成 image

Image 指的是已經打包好的環境,但是還沒有跑起來的話,就是一堆檔案而已

$ docker image build -t dockerfile_test .

指令參數講解:
docker build -t {mage_name} {current_folder}

▍Step 3 透過 image 產生隔離的執行環境 container

image 跑起來之後產生的 instance 就是 container,他們之間的關係就像程式碼跟跑起來的程式,程式碼不跑就只是一堆檔案,但跑起來之後他就會變成一個真的在跑 process

$ docker run -d -p 80:8888 --name docker0109 dockerfile_test

指令參數講解:
-d 背景執行
-p 將主機 8888 port 與 container的 80 port 綁定
–name 為 container 命名

更多更多 docker run參數參考: Docker Container 指令:Docker run & Docker exec – 靖.技場

▍完成,開啟瀏覽器連線試試

連線 0.0.0.0:80 或 127.0.0.1:80 ,就可以看到 Flask Dockerized 就表示成功囉!

▍其他 Container 相關指令介紹:

1.查看正在運行 container 清單

$ docker container ls 

2.查看所有 container 清單

$ docker container ls -all 

3.查看 container log

$ docker container logs {name}

4.進入 container 操作

$ docker exec -it {name} /bin/bash

▍最後:

此篇的完整程式碼放置於 GitHub,歡迎 git clone 使用。

更多 Flask 教學相關閱讀:

▍關於 Flask 教學系列目錄:

▍其他 Flask 相關教學:

有關Max行銷誌的最新文章,都會發佈在Max的Facebook粉絲專頁,如果想看最新更新,還請您按讚或是追蹤唷!

在〈實作 Dockerfile + flask 教學 (附GitHub完整程式)〉中有 2 則留言

  1. 感謝,測試成功!main.py中的單雙引號 及 “-p 80: 8888″多了一個空白,這兩個地方修正就可以完全複製貼上測試了~

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *