Docker容器使用宿主机上的mongod/redis等服务

Docker容器使用宿主机上的mongod/redis等服务

我们在本地的开发中为了保证大家都开发环境一直,PHP 的扩展,版本保持一致, 我们使用了 docker .但是由于redis/mongodb 在宿主机上, 所以通过 127.0.0.1 是连接不上的

前提说明

这个是在 docker 运行容器时使用的桥接模式(默认) 时才会发生以上问题.如果使用 host 模式就没有.
所以,我们就是要把是 docker 的网络模式设置为 host 模式.

具体实现

~ docker run --network host php56

补充说明

  • 使用了 host 模式后,则表示宿主机与容器共享宿主机的 IP,端口. 如果不希望与宿主机共享,则不能使用这种方式
  • 如果你的电脑是 Mac, 并且你的docker 版本大于18.03,则你可以在代码中使用 docker.for.mac.localhost 来连接宿主机上的服务.
//使用示例
//以连接 mongod 为例
$mongodb =  new \MongoDB\Driver\Manager('mongodb://docker.for.mac.localhost/:27017');
  • Windows 跟 Linux 暂时还没有发现可以在桥接模式下可以通过特使字符来使用宿主机上服务的方法.如果各位有好的方法,欢迎留言讨论.

你可能感兴趣的:(docker,docker)