问题描述:
- 同一个华为云宿主机上, 两个docker容器,分别是django和mysql, django通过公网IP访问mysql,运行正常.
- 电脑本地 django容器 使用 内部IP 访问 本地服务器上 的docker mysql容器, 运行正常.
- 本地服务器 虚拟机上,django使用内部IP访问mysql,不成功,报错如图.
解决过程:
感谢这位大神, 重点参考文章
- 首先,django 容器在华为云是完全可以跑起来的, 说明代码没有问题
- 其次, mysql 数据正常
- 使用命令
docker inspect mysql检查 mysql
- 从图中可以看到
Getway和IPAddress, 优先使用IP地址访问, 访问不成功, - 切换为Getway, 访问成功,
- 看过参考文章后, 测试结果
- 接受访问的docker 提供的是mysql服务,
- 测试1: 将
django.settings.py中DATABASES中的HOST,改为:172.17.0.2PORT改为:3306, 访问成功 - 测试2: 将
django.settings.py中DATABASES中的HOST,改为:172.17.0.1PORT改为:3333, (此端口是中docker run -p 3333:3306 -name mysql), 访问成功