我有兩個不同的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