• 跳至主要內容
  • Skip to secondary menu
  • 跳至主要資訊欄
  • 跳至頁尾
測試先生

測試先生

提供測試相關領域的技術文章以及其他軟體技術相關文章,如WordPress,Js,Css,Html,Python,Docker,Kubernetes,devops,k8s,jenkins,git,heroku,line,telegram

  • Python 教學
  • 網頁開發
    • WordPress 教學
    • HTML 教學
    • CSS 教學
    • Bootstrap 教學
    • JavaScript 教學
  • DevOps
    • Docker 教學
    • Jenkins 教學
    • Ngrok 教學
    • Git 教學
    • Heroku 教學
    • Google API 教學
    • ChatBot 教學
    • 自動化測試 教學
  • 網路資源
  • 關於我
目前位置: 首頁 / Docker 教學 / 【Docker 教學】快速架設Python Flask app web環境!

【Docker 教學】快速架設Python Flask app web環境!

文章更新日期: 2022 年 4 月 19 日

想在Docker架設 Flask app 環境嗎?

按著步驟走,一定可以快速學會如何透過Docker架設Flask app 開發環境!

內容目錄

  • Dockerfile 建立 Docker image
    • Dockerfile
    • app.py
    • requirements.txt
    • templates/index.html
  • Build docker image
  • Docker run image
  • Docker Stop containers
  • Docker System prune
  • 更多技術文章

Dockerfile 建立 Docker image

dockerfile算是一個docker的腳本,透過指令建立一個新的image,接著docker run 就可以快速執行Flask app環境

首先建立一個主資料夾名稱為 docker-flask,接著裡面放置需要的檔案

資料夾結構

.
├── Dockerfile
├── app.py
├── requirements.txt
└── templates
    └── index.html

第一次看可能覺得很複雜,分開看就會比較好理解,一個慢慢介紹說明

Dockerfile

剛前面有說這是一個docker的腳本指令,我們腳本指令內容如下,可以直接複製貼上操作,註解都有簡單的介紹

# 建置最基礎的image也就是python3.9
FROM python:3.9
# 定義當前的目錄位置
WORKDIR /docker-flask
# 將內容複製到工作目錄中
ADD . /docker-flask
# 運行pip3來安裝Flask應用程序的依賴套件
RUN pip3 install -r requirements.txt
# 執行python的指令語法
CMD ["python3","app.py"]

app.py

簡單的flask app,主要是取得templates內的index.html顯示在網頁上,注意的是host=’0.0.0.0′ 需要加上,如果沒加上,會找到執行docker時,會找不到對應的網址連結

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def hello_world():
    return render_template('index.html')

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

requirements.txt

針對你要安裝的套件都可以寫入在requirements.txt內,除了針對依賴套件外,也可以針對版本進行安裝

Flask

templates/index.html

顯示在web上的基本樣式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Docker Flask web App</title>
</head>
<body>
    <h1>Hello test</h1>
</body>
</html>

上面都建立完了之後,接著來build image吧!

Build docker image

終端機請到docker-flask 資料夾的位置上

執行 ”docker image build -t docker-flask . “,程式碼就會開始自動去build docker image,第一次可能需要花一點時間,請耐心等候

$ docker image build -t docker-flask .
[+] Building 3.5s (9/9) FINISHED                                                                                                                                                                                         
 => [internal] load build definition from Dockerfile                                                                                                                                                                0.0s
 => => transferring dockerfile: 37B                                                                                                                                                                                 0.0s
 => [internal] load .dockerignore                                                                                                                                                                                   0.0s
 => => transferring context: 2B                                                                                                                                                                                     0.0s
 => [internal] load metadata for docker.io/library/python:3.9                                                                                                                                                       3.3s
 => [internal] load build context                                                                                                                                                                                   0.0s
 => => transferring context: 249B                                                                                                                                                                                   0.0s
 => [1/4] FROM docker.io/library/python:3.9@sha256:8771691756bbf5beff80d64fca8f5b12e018352ddd9e30d8cdfef8cc3717b0e6                                                                                                 0.0s
 => CACHED [2/4] WORKDIR /docker-flask                                                                                                                                                                              0.0s
 => CACHED [3/4] ADD . /docker-flask                                                                                                                                                                                0.0s
 => CACHED [4/4] RUN pip3 install -r requirements.txt                                                                                                                                                               0.0s
 => exporting to image                                                                                                                                                                                              0.0s
 => => exporting layers                                                                                                                                                                                             0.0s
 => => writing image sha256:c289626b707be01f64f7349661659bca33c2cf1f7849e7183f8aa7e453c6cd50                                                                                                                        0.0s
 => => naming to docker.io/library/docker-flask                                                                                                                                                                     0.0s

結束後請輸入下方程式碼,就會順利看到產生出來的image,接著前往執行 docker image

$ docker image ls
REPOSITORY     TAG       IMAGE ID       CREATED          SIZE
docker-flask   latest    c289626b707b   42 minutes ago   922MB

Docker run image

終端機一樣在docker-flask 資料夾的位置上,執行下方程式碼,會產生一段字串,這個字串就是容器(Containers),我們架設的flask就是放在容器內

$ docker run -p 5000:5000 -d docker-flask
773c403004a5c6636f1149b2d1c0e0e66b8aaf7bb147a184338cc21cbf0a1bc4

那我們要怎麼查看是否有跑起來呢?可以直接打開網址 http://localhost:5000/ 就會順利看到我們的index.html的網頁樣式

或是可以透過下方指令查看log狀態,logs後面的是容器id

$ docker logs 773c403004a5c6636f1149b2d1c0e0e66b8aaf7bb147a184338cc21cbf0a1bc4
 * Serving Flask app 'app' (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on all addresses.
   WARNING: This is a development server. Do not use it in a production deployment.
 * Running on http://172.17.0.2:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 176-610-677
172.17.0.1 - - [02/Nov/2021 14:47:43] "GET / HTTP/1.1" 200 -
172.17.0.1 - - [02/Nov/2021 14:49:30] "GET / HTTP/1.1" 200 -
172.17.0.1 - - [02/Nov/2021 15:30:42] "GET / HTTP/1.1" 200 -

接著我們不想跑了,想把Flask app關閉該怎麼做呢?

Docker Stop containers

只需要在終端機上輸入下方指令,就可以將正在執行的flask app關閉,這時打開應網址是找不到任何東西。

$ docker stop 773c403004a5c6636f1149b2d1c0e0e66b8aaf7bb147a184338cc21cbf0a1bc4
773c403004a5c6636f1149b2d1c0e0e66b8aaf7bb147a184338cc21cbf0a1bc4

最後我們把一些docker 不必要的內容物進行清除,以免浪費電腦空間。

Docker System prune

終端機輸入 docker system prune 搭配 y 就可以將不需要的資源進行刪除的動作。

$ docker system prune
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all dangling images
  - all dangling build cache

Are you sure you want to continue? [y/N] y
Deleted Containers:
773c403004a5c6636f1149b2d1c0e0e66b8aaf7bb147a184338cc21cbf0a1bc4

Deleted build cache objects:
f8q5l7xmspcwgaw6tzf2f1dec
80nz0p6n18nbeaul1z9t2rtfk
or1eybwv5hajdpkc12p90zkhs
owj895e4r2kgx1vpw5fq8j1kz
usz1sbnqd3zyi83cdzal4pn2n

Total reclaimed space: 10.77MB

以上就是Docker 架設 Flask app 環境的簡單方法。

文章內的程式碼都可以直接複製下來練習操作,或是直接套用到自己的專案都行!

多練習,對自已會有很大的幫助!

一回生二回熟,將所學習到內容變成自己的知識。

人就是要學習自己不會的事情,這樣才會不斷的成長、進步!

更多技術文章

透過下方按鈕找尋到相關的技術文章,希望可以幫助到正在學習的你

html 教學文章
Python 教學文章
Ngrok 教學
Jenkins 教學
WordPress 教學
Chatbot 教學

加入到我的粉絲專頁,不定期發布最新文章資訊!
有任何文章問題都可以詢問喔!

測試先生

文章分類: Docker 教學 文章標籤: build docker image, docker, docker containers, docker image, docker run image, docker stop containers, docker system prune, dockerfile, flask © 2021–2022

主要資訊欄

  • 電子郵件
  • Facebook
  • GitHub
  • LinkedIn

查看更多文章

SSH Key Mac OS 如何獲取 ssh key
Jenkins 教學 Mac OS 如何安裝 Jenkins 在本地端
【Flask 教學】render_template 搭配 參數,簡單好上手!
【Flask 教學】使用render_template快速建立好模板!
【Flask 教學】url_for、redirect的應用
  • Dockerfile 建立 Docker image
    • Dockerfile
    • app.py
    • requirements.txt
    • templates/index.html
  • Build docker image
  • Docker run image
  • Docker Stop containers
  • Docker System prune
  • 更多技術文章

Footer

  • 隱私權政策
  • 免責聲明與使用條款
  • 聯絡我們
  • 電子郵件
  • Facebook
  • GitHub
  • LinkedIn

Copyright © 2022 · Magazine Pro on Genesis Framework · WordPress · 登入