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

假设今天有的flask服务要附上能一起使用的DB,可以考虑使用Docker compose这个服务。
只需要一个指令docker-compose up,就可以把整套系统起起来。

可以先看一下结构及app.py:

http://img2.58codes.com/2024/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。

http://img2.58codes.com/2024/20122678nM7ZWoDFnU.png

http://img2.58codes.com/2024/20122678uDbyGyUFr7.png

而Dockerfile、requirements.txt与前面的长得差不多。

再来是docker-compose.yml:

http://img2.58codes.com/2024/20122678Rac36FQEJ2.png

可以发现flask的服务是现场build出image来运行成container,而mongodb是使用已经拉好的image,而且我们也将flask服务连结到与DB同一个Network。

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

docker-compose up

接着可以看看运行结果。
http://img2.58codes.com/2024/20122678sTxG4ySDxY.png

http://img2.58codes.com/2024/201226784SN2CQSDz3.png

[day 1] 开场白[day 2] blue_print[day 3] Factory mode[day 4] JWT token[day 5] session[day 6] Jinja[day 7] Post data with Form tag[day 8] ajax with jquery[day 9] request[day 10] 将资料写进DB(pymongo)[day 11] log with mongoDB[day 12] Sql Database[day 13] 档案上传[day 14] 档案下载 及 其他传值方法[day 15] boostrap 4.6[day 16] API[day 17] Docker image化--安装篇[day 18] Docker image化--运行篇[day 19] Nginx[day 20] Docker compose[day 21] Nginx with https[day 22] pythonanywhere 部署[day 23] GCP app engine (介绍)[day 24] GCP app engine (deploy)[day 25] Flask with web cam[day 26] Flask with ML[day 27] Supervisor[day 28] Flask-Mail[day 29] Line Messaging API[day 30] 结语

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章