在我的主机上,我在nginx上运行了一个服务器xyz.example.com
。它不是dockerized,外部世界无法访问,它只是用于本地开发环境。
我希望能够从docker容器中访问它。
例如,我希望能够在我的docker容器中执行以下操作:
curl xyz.example.com
并查看我在主机上运行命令时看到的相同输出。
另外,我使用的是docker-compose。
答案 0 :(得分:1)
我猜您的容器不知道您的xyz.example.com
,因为它是在您的主机/etc/host
中声明的(您说它是私人服务器)?
然后您可以将主机添加为extra_host
:
services:
some-service:
extra_hosts:
- "xyz.example.com:HOST_BRIDGE_IP"
extra_host
会在容器的/etc/host
中添加主机名映射。
在docker bridge中运行你的docker-compose.yml
替换HOST_BRIDGE_IP
的ip:
HOST_BRIDGE_IP=$(docker network inspect bridge \
--format '{{range .IPAM.Config}}{{.Gateway}}{{end}}') \
&& sed -e "s/HOST_BRIDGE_IP/${HOST_BRIDGE_IP}/g" \
docker-compose.yml | docker-compose --file - up
这将允许基于服务器中的DNS的虚拟主机解析。
编辑:这对我来说有点矫枉过正,有人有更好的建议吗?
答案 1 :(得分:0)
它可能不会直接路由到主机网络。 This question可能有帮助。