[英]Linked docker containers can't communicate with each other
我使用docker-compose來運行我的應用程序堆棧。
應用程序堆棧是:
下面是我的docker-compose的片段:
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。 但ui-service不能談論休息服務(我的意思是在港口(碼頭集裝箱上的5000))。
如果我嘗試與主機端口上的休息服務進行ui-service通話(我的意思是端口15000,它監聽docker容器的端口5000),它可以工作。 因此,我無法理解為什么會這樣。
任何幫助將受到高度贊賞。
除非您要從此容器網絡外部訪問端口,否則請刪除ports
部件。 鏈接容器不需要相互明確地公開端口,並且正如您所發現的那樣,它將它們公開給主機。 您需要不公開端口或僅訪問您正在使用的端口,而是通過localhost:1234
語法(不是container-name:1234
)。
確保您了解如何引用端口,如果使用容器名稱,則可能需要鏈接,但如果您不想這樣做,則需要使用localhost和主機端口。
使用鏈接自動允許鏈接的容器訪問容器的端口。 這意味着你的mongodb上的任何端口都可以通過它的容器端口訪問,即使它沒有暴露。
當您明確地公開它們時,它們會暴露給您的localhost for docker,這就是為什么您的某些東西可以工作的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.