我有两个不同的Docker容器,每个人都有不同的图像。容器中的每个应用程序都使用无冲突的端口。看到docker-compose.yml
:如何在两个不同Docker容器之间共享本地主机?
version: "2"
services:
service_a:
container_name: service_a.dev
image: service_a.dev
ports:
- "6473:6473"
- "6474:6474"
- "1812:1812"
depends_on:
- postgres
volumes:
- ../configs/service_a/var/conf:/opt/services/service_a/var/conf
postgres:
container_name: postgres.dev
hostname: postgres.dev
image: postgres:9.6
ports:
- "5432:5432"
volumes:
- ../configs/postgres/scripts:/docker-entrypoint-initdb.d/
我可以从主机(Mac OS)中,例如成功地卷曲的每个图像curl -k https://localhost:6473/service_a/api/version
的作品。我想要做的是能够参考postgres
容器从service_a
容器通过localhost
好像这两个容器是一个,他们共享相同的localhost
。我知道这是可能的,如果我使用主机名postgres.dev
从service_a
容器内,但我希望能够使用localhost
。这可能吗?请注意,我并不是很熟悉网络或Docker。
Mac版:10.12.4
泊坞版本:多克尔版本17.03.0策,建立60ccb22
我已经做了一些比较以前的研究,也没有找到一个解决方案。 相关:https://forums.docker.com/t/localhost-and-docker-compose-networking-issue/23100/2
几个(不同程度的hackiness)这样做的方式,但你怎么想呢? – johnharris85
我会重申,你为什么要这么做?用'localhost'搞乱只会造成混淆。在同一个容器中运行这两个进程可以达到同样的效果,而不会出现这种冒犯。 – Matt
我的用例是这样的:为了某些安全目的,这两个服务必须部署在同一个主机上,所以现实世界中的'service_a'将被配置为只侦听'localhost/127.0.0.1'。理想情况下,我会创建一个Docker镜像来同时拥有postgres和service_a,但这似乎不可行,因此我的方法在这里。 – kolistivra