JYU Blog

Python_Flask_Web與Docker建置網站筆記-使用Docker運行Nginx與uWSGI容器服務
2020-06-27 13:01:00

此筆記內容記錄著依據Nginx整合uWSGI Server服務映像檔,建立一個運行Nginx與uWSGI容器服務。

GitHub: https://github.com/s123600g/FlaskDemoNotes/tree/master/flask_base_framework

配合筆記: Python_Flask_Web與Docker建置網站筆記-使用Docker建置Nginx結合uWSGI映像檔


建立一個容器服務

語法格式:

docker run  --name 自定義容器名稱 --restart always -p 容器對外port:容器內部port -v 本機掛載目錄:容器內部目錄 -d 使用image名稱

關於詳細參數項目資訊可參考: https://docs.docker.com/engine/reference/commandline/run/#options


實際建立一個容器服務範例

運行一個容器服務以Nginx整合uWSGI Server服務映像檔作為建立依據

docker run  --name flask_helloworld --restart always -p 85:80 -v E:\Project\flask_helloworld:/web/web_data -d nginx_flask_server
  1. 運行一個容器服務識別標籤為 flask_helloworld
  2. 設置總是隨著Docker主程序啟動時,自動啟動容器服
  3. Host 85 Port對接容器內部 80 Port
  4. 掛載一個本機實體位置 E:\Project\flask_helloworld 至容器內部 /web/web_data
  5. 使用映像檔 nginx_flask_server 為容器內容建置基礎

關於掛載範例Flask程式檔案 https://github.com/s123600g/FlaskDemoNotes/tree/master/my_flask_web

下載完畢放置在掛載本機實體位置內,並手動建立一個名為uwsgi空目錄即可。

執行完可在瀏覽器視窗輸入位址: http://127.0.0.1:85/helloworld

可透過下面指令查看容器資訊

docker ps -a

有關於docker ps指令可參考: https://docs.docker.com/engine/reference/commandline/ps/

如果要進入容器內部環境可執行以下指令

docker exec -it 容器識別名稱 bash

用以上範例容器名稱 flask_helloworld

docker exec -it flask_helloworld bash

有關於docker exec指令可參考: https://docs.docker.com/engine/reference/commandline/exec/


其他容器服務

portainer
方便控管容器GUI介面工具

docker run -d -p 9000:9000 -p 8000:8000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v E:\app\Docker\portainer_data:/data portainer/portainer

MySQL

docker run --name jyu-mysql -e MYSQL_ROOT_PASSWORD=password -d mysql:latest

後面範例實作會用到此容器服務MYSQL,因為是範例實作所以MySQL Root密碼會用簡單password來設置,實際狀況下使用時請謹慎設置Root密碼。