範例程式碼
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 上看到你的服務了