我是码头工人的新手。我正在运行在本地计算机上运行的Postgresql(即在Mac OS上)。我的应用程序在docker中运行。我想要的是我的应用程序应该能够从docker访问PostgreSQL(有很多生产数据,这些数据不能在docker上运行)。怎么做?有人能给我一个这样做的例子吗?
非常感谢提前
答案 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