项目场景
部署生产环境时,多个docker应用部署在一台服务器。
比如:
docker1部署应用,docker2部署mysql。
docker1中配置的mysql链接地址是宿主机的docker2,因此配置连接地址为127.0.0.1。
貌似毫无问题!
问题描述
mysql链接不通。
原因分析
简单分析一下,又是低级错误。
对于docker1来说,127.0.0.1还是docker1啊!
解决方案
寻找解决方案。
配置host参数为host.docker.internal,这样在container内,可以直接请求host.docker.internal:port,也就是使用host.docker.internal代替127.0.0.1,来使用宿主机上提供的各种服务。
具体如下方法如下:
- 方案一
启动docker时,加入如下语句:
--add-host=host.docker.internal:host-gateway
- 方案二
如果使用docker-compose,docker-compose.yml的声明中添加如下配置:
extra_hosts:
- "host.docker.internal:host-gateway"