使用Docker包裝你的應用 – Python & Flask




範例程式碼

https://github.com/p208p2002/dockerize-tutorial

為什麼需要Docker化?

使用Docker包裝你的應用,可以免去重複、費時又繁瑣的設定,在不同的機器上輕鬆部屬你的服務

使用pipenv建構一個乾淨的python環境

執行這個步驟非常重要,因為我們需要紀錄開發應用時使用到的相依套件

安裝pipenv

 $ pip install pipenv

建立虛擬環境

$ pipenv –three 

進入虛擬環境

 $ pipenv shell 

建構你的Flask App

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

app.run(host='0.0.0.0')

建立 requirements.txt

pip freeze 指令會記錄所有在虛擬環境透過 pip install 安裝的套件版本

$ pip freeze > requirements.txt 

製作Dockerfile

$ touch Dockerfile

或直接新增一個空白檔案

FROM ubuntu:18.04
# env
ENV LC_ALL=C.UTF-8
ENV LANG=C.UTF-8
# project and workdir
COPY hello-flask /home/hello-flask
WORKDIR /home/hello-flask
# install py36
RUN apt-get update && apt-get install -y --no-install-recommends \
    python3.6 \
    python3-pip \
    && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*
# project setting
RUN pip3 install -r requirements.txt
EXPOSE 5000
ENTRYPOINT python3 main.py

使用Dockerfile建立映像檔

$ docker build -t=flask-env .

建立服務容器

$ docker run -itd -p 5000:5000 --name='flask-app' flask-env

參數說明
--interactive , -i -> Keep STDIN open even if not attached
--tty , -t -> Allocate a pseudo-TTY
--detach , -d -> Run container in background and print container ID
--publish , -p -> Publish a container’s port(s) to the host

現在可以在 127.0.0.1:5000 上看到你的服務了

發佈留言

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

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料