如何从docker服务连接外部服务

时间:2018-03-07 09:56:33

标签: docker docker-compose

我是码头工人的新手。我正在运行在本地计算机上运行的Postgresql(即在Mac OS上)。我的应用程序在docker中运行。我想要的是我的应用程序应该能够从docker访问PostgreSQL(有很多生产数据,这些数据不能在docker上运行)。怎么做?有人能给我一个这样做的例子吗?

非常感谢提前

2 个答案:

答案 0 :(得分:2)

在我的情况下(我在Ubuntu上运行了docker),有一个docker0网络接口,主机接收IP 172.17.0.1。将附加到默认网络的每个容器都将获得172.17.0.X范围内的IP。这样,容器可以通过与172.17.0.1[:port]交谈来访问在主机上运行的服务,因为它们位于同一网络上...

但是,Docker for Mac的情况有所不同......

来自:Networking features in Docker for Mac

  

已知限制,用例和变通方法

     

以下是Docker for Mac网络堆栈的当前限制摘要,以及解决方法的一些想法。   macOS上没有docker0桥接

     

由于在Docker for Mac中实现网络的方式,您无法在macOS中看到docker0接口。此界面实际上在HyperKit内。

     

用例和解决方法

     

我想从容器连接到主机上的服务

     

Mac有不断变化的IP地址(如果没有网络访问权限,则为无)。从17.12开始,我们的建议是连接到特殊的仅限Mac的DNS名称docker.for.mac.host.internal,该名称解析为主机使用的内部IP地址。

答案 1 :(得分:2)

最后,我找到了一个解决方案来链接docker中的外部服务。在docker-compose.yaml

中添加了以下行
    extra_hosts:
       my-local-host: 10.0.0.10 #Local machine IP
     environment:
       - SERVER=http://my-local-host:3000