现在如何运作:
微服务 X 使用静态 ip 向微服务 Y 发出 REST API 请求
http://{ip-address}:{port}/doSomething
问题:
问题是我不能长期保证静态ip。
我不想通过使用 docker 主机名来解决这个问题:
http://hostname:{port}/doSomething
我尝试通过在 docker-compose 中创建一个使用的定义网络来实现此目的:
#part of docker-compose file
streamapp:
hostname: twitterstreamapp
image: twitterstreamapp
container_name: twitterstreamapp
restart: always
ports:
- '8090:8080'
build:
context: ./TwitterStream
dockerfile: Dockerfile
storeapp:
hostname: twitterstoreapp
image: twitterstoreapp
container_name: twitterstoreapp
restart: always
ports:
- '8095:8080'
build:
context: ./TwitterStore
dockerfile: Dockerfile
depends_on:
- 'mysql-db'
networks:
- backend
volumes:
MyDataVolume:
networks:
backend:
driver: bridge
我可以从容器 X ping 到容器 Y。但例如不能 ping 通 Curl。
我该如何解决这个问题,或者这不是实现我想要的最好方法。
解决方案非常简单,您可以使用服务名称,而不是使用 IP 或主机名。
在你的例子中,在streamapp
您可以使用以下方式访问其他服务http://storeapp:8080
.
类似地,在storeapp
您可以访问其他服务http://streamapp:8080
.
请注意,您必须使用内部端口,而不是导出的端口。
当您从其他机器(即从互联网)访问服务时,这并不适用。在这种情况下,您必须使用表格http://{IP_OF_THE_MACHINE}:8090
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)