在應用啓動過程當中, Flask 會建立一個 Python 的 logging.Logger 類實例,並將其附屬到應用實例上,經過 app.logger 訪問css
============================mysql
容器映像常用 Alpine Linux,由於它體量小。
============================sql
在dockerfile裏建立用戶,並切換到此用戶。docker
adduser 命令的 -D 參數禁止命令提示用戶輸入密碼
USER 命令選擇以哪一個用戶的身份運行容器,以及 Dockerfile 文件中後續的命令。 Docker 默認使用 root 用戶
====================flask
將宿主系統的 8000 端口映射到容器的 5000 端口上
============================api
=================================安全
Compose 能按正確的順序啓動 mysql 和 flasky 容器,由於它能從 flasky 的 links 鍵檢測到兩者之間的依賴關係。 MySQL 可能要花幾秒鐘才能啓動,可是 Compose 不會等待。設
計分佈式系統時,鏈接外部服務器時通常都會多試幾回。
===============================服務器
1 啓動應用:docker-compose up -d --build 【--build 選項指明,應該在啓動應用以前構建 鏡像】
2 Compose 把全部容器的日誌合併爲一個流,可使用 docker-compose logs 命令查看app
3 若是你想持續監控日誌流的話,使用 docker-compose logs -f
4 docker-compose ps 命令輸出運行中各容器的概況和狀態
5 若想中止應用,使用 docker-compose down 命令。若是想把容器中止並刪掉,使用 dockercompose rm --stop --force 命令。
6 可使用 docker volume ls命令查看系統分配的所有卷。若想刪除某個再也不使用的卷,使用 docker volume rm
7docker system prune --volumes 命令。這個命令會刪除全部再也不使用的映像或卷,以及中止後依然在系統中的容器
8 手動起的鏡像在容器異常退出了,容器日誌查看,安全性和伸縮性上還有侷限性,不方便管理,此時可使用Kubernetes 進行更精巧的編排。
=========================分佈式
pip freeze 命令查看虛擬環境中安裝了哪些包
Flask 支持在路由中使用 string、int、 float 和 path 類型。 path 類型是一種特殊的字符串,與 string 類型不一樣的是,它能夠包含正斜線
==============================
爲了不大量無關緊要的參數把視圖函數弄得一團糟, Flask 使用上下文臨時把某些對象(如request)變爲全局可訪問 。Flask 使用上下文讓特定的變量在一個線程中全局可
訪問,與此同時卻不會干擾其餘線程。
Flask 在分派請求以前激活(或推送)應用和請求上下文,請求處理完成後再將其刪除 。若是使用這些變量時沒有激活應用上
下文或請求上下文,就會致使錯誤
===================
request 的經常使用屬性和方法
============================
在請求鉤子函數和視圖函數之間共享數據通常使用上下文全局變量 g
===============================
若是視圖函數返回的響應須要使用不一樣的狀態碼,能夠把數字代碼做爲第二個返回值,添加到響應文本以後
==============================
Flask 提供的 render_template() 函數把 Jinja2 模板引擎集成到了應用中。這個函數的第一個參數是模板的文件名,隨後的參數都是鍵 – 值對,表示模板中變量對應的具體值。
===============================
變量的值可使用過濾器修改。過濾器添加在變量名以後,兩者之間以豎線分隔。例如,下述模板把 name 變量的值變成首字母大寫的形式: Hello, {{ name|capitalize }}
====================
一、使用的 {{ name }} 結構表示一個變量
二、{% if condition %}...{% else %}...{% endif %}
三、
4 Jinja2 還支持宏。宏相似於 Python 代碼中的函數
5 導入宏
6 Jinja2 使用 block 和 endblock 指令在基模板中定義內容區塊。
7 模板繼承:
若是基模板和衍生模板中的同名區塊中都有內容,衍生模板中的內容將顯示出來。在衍生模板的區塊裏能夠調用 super(),引用基模板中同名區塊裏的內容。
8
9 url_for('index') 獲得的結果是 /,即應用的根 URL。
調用 url_for('index', _external=True)返回的則是絕對地址,在這個示例中是 http://localhost:5000/。
10 static是 Flask 爲了支持靜態文件而自動添加的,這個特殊路由的 URL 是 /static/<filename>。
例如,調用 url_for('static', filename='css/styles.css', _external=True) 獲得的結果是 http://localhost:5000/static/css/styles.css。
11 app.config 字典可用於存儲 Flask、擴展和應用自身的配置變量。使用標準的字典句法就能把配置添加到 app.config 對象中。
12
13 flash() 函數可實現閃現效果 ,僅調用 flash() 函數並不能把消息顯示出來,應用的模板必須渲染這些消息 ,Flask 把 get_flashed_
messages() 函數開放給模板,用於獲取並渲染閃現消息
===============================
有了藍圖,就能夠在flask應用尚未被實例化時,建立視圖函數了。在藍本中定義的路由和錯誤處理程序處於休眠狀態,直
到藍本註冊到應用上以後,它們才真正成爲應用的一部分
跨藍本的重定向必須使用帶有藍本名的徹底限定端點名
=================================
pip freeze >requirements.txt
pip install -r requirements.txt
===============
通常在url中加上版本號(/api/v1.0/posts/ ),在一段時間內,服務器要同時處理 v1.1 和 v1.0 這兩個版本的 URL