iT邦幫忙

0

伸縮自如的Flask [day 20] Docker compose

假設今天有的flask服務要附上能一起使用的DB,可以考慮使用Docker compose這個服務。
只需要一個指令docker-compose up,就可以把整套系統起起來。

可以先看一下結構及app.py:

https://ithelp.ithome.com.tw/upload/images/20210602/20122678fIJQl2yvBd.png

可以發現在主程式為app.py,而在旁邊放置了docker-compose.yml、Dockerfile、requirements.txt,
而app.py的功能呢,是如果有人訪問根路由,就在DB寫入一筆hello的資料。

可以特別注意到,因為之後的docker-compose.yml會將container link在一起(container 運行在同一個Network),所以DBconnection設定為"mongodb://host.docker.internal:27017/",而不是localhost。

假設不想使用link的方法,也可以使用:

docker inspect --format="{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" <container id or name>

來查詢container與預設Network "Bridge" 所連結的IP。

https://ithelp.ithome.com.tw/upload/images/20210602/20122678nM7ZWoDFnU.png

https://ithelp.ithome.com.tw/upload/images/20210602/20122678uDbyGyUFr7.png

而Dockerfile、requirements.txt與前面的長得差不多。

再來是docker-compose.yml:

https://ithelp.ithome.com.tw/upload/images/20210602/20122678Rac36FQEJ2.png

可以發現flask的服務是現場build出image來運行成container,而mongodb是使用已經拉好的image,而且我們也將flask服務連結到與DB同一個Network。

在有docker-compose.yml的路徑上打上指令:

docker-compose up

接著可以看看運行結果。
https://ithelp.ithome.com.tw/upload/images/20210602/20122678sTxG4ySDxY.png

https://ithelp.ithome.com.tw/upload/images/20210602/201226784SN2CQSDz3.png


尚未有邦友留言

立即登入留言