容器之间网络通信问题——其中一个容器访问不到另一个数据库容器

虚拟机上启动了两个容器,一个是flask服务,一个是mariadb;
在pycharm以开发模式或者gunicorn运行都能正常访问数据库,但是将flask服务构建镜像再运行后就不能访问数据库了,尝试运行flask镜像是link到mariadb容器,仍然报错
mariadb容器启动命令:docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -v /data/mysql:/var/lib/mysql mariadb
flask容器启动命令:docker run -d --name flaskdemo --link mysql:db -p 5000:5000 flaskdemo:v1
flask容器环境变量:


flask容器hosts:
image
flask容器ip:172.17.0.3
mysql容器ip:172.17.0.2
主机ip:192.168.11.128
当数据库配置中的数据库ip是主机ip,访问接口时,会报如下错误:

当我把数据库配置的ip修改为mysql容器ip时可以正常访问;
请老师和同学们帮忙解答一下,谢谢

flask连接数据库代码怎么写的?

按老师课堂上讲的用flask_sqlalchemy管理
image

容器host值改成db,也就是docker --link mysql:db名试试吧.因为–link后会查找db而不是你设置的ip

1 个赞

也不行呢
image

不是这里,是代码部分.看我上面的截图

哦,那个是从yml读取数据库配置的,没啥影响

这里要改成db的,类似这样,试试吧
微信截图_20201125204347

这种方式真的可行,感谢学委 :grin: