此筆記內容記錄著依據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
-–name
給予此容器一個自訂識別名稱,可在docker ps -a資訊內看到。
-–restart always
設定為當Docker運行時,自動啟動此容器服務,不管容器狀態是如何都會被Docker嘗試重新啟動。
-p
設置主機host port對應容器內部port,當有連線需要跟容器對接時,透過設置host port導向到容器內部port。
假設要開放host 8080 port對應容器內部80 port,可以參考下面方式
-p 8080:80
或
-p 127.0.0.1:8080:80
-v
設置在本機上網站目錄掛載進容器內部網站目錄,在內部/web/web_data底下檔案會跟本機上實體網站目錄同步一樣。
-d
設置容器要以指定映像檔來建置運作環境。運行一個容器服務以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
關於掛載範例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密碼。