我正在使用docker-compose來運行我的應用程序堆棧。鏈接的碼頭集裝箱不能互相通信
應用程序的堆棧是:
- 蒙戈
- REST服務(稱爲下文其餘服務)
- UI服務(稱爲下文UI服務)
下面是碼頭的碼頭 - 撰寫:
services:
mongodb:
image: mongo:3
container_name: mongodb
ports:
- "17027:27017"
rest-service:
build: ./rest-service/
container_name: rest
ports:
- "15000:5000"
command: "/opt/app/conf/config.yml"
links:
- mongodb:mongo
ui-service:
build: ./ui-service/
container_name: ui
ports:
- "18080:8080"
links:
- rest-service:rest
environment:
NODE_ENV: development
我在這裏面臨的問題是,我的休息服務可以與mongo容器(我的意思是在端口(Docker容器上的27017))進行通信,因爲mongo已鏈接到restService。但用戶服務不能與休息服務(我的意思是在碼頭上的5000(碼頭集裝箱上))。
如果我嘗試在主端口(我的意思是端口15000在端口容器的端口5000上偵聽)上使用ui-service對話服務,它就可以工作。 因此,我無法理解爲什麼發生這種情況。
任何幫助將不勝感激。
'ui-service'的'/ etc/hosts'中是否有'rest'? 'ui-service'能夠ping'rest'(docker exec -ti ui-service bash - > ping rest)嗎? –
@ThomasMaier'rest'不在'ui-service'的'/ etc/hosts'中 命令'docker exec -ti ui-service bash - > ping rest'不會給我任何東西。 當我用命令連接到ui-service時, 'docker exec -ti ui-service bash',然後在容器上,如果我說, 'ping rest',那麼我確實得到了正確的響應。 這是否意味着我需要在主機的'/ etc/hosts'上添加'rest'? – Aditya
@ThomasMaier剛剛證實,如果我在主機的'/ etc/hosts'文件中爲'rest'添加映射,情況就會奏效。 但只是看看是否還有其他更好的出路? – Aditya