我关注docker-compose
并在本地运行:
version: '3.4'
services:
testservice.api:
image: testservice.api
build:
context: .
dockerfile: Services/.../Dockerfile
ports:
- "5101:80"
sql.data:
image: postgres.jchem
build:
context: ../db/postgres
dockerfile: Dockerfile
ports:
- "5432:5432"
- "9090:9090"
现在在sql.data
容器中我尝试执行curl http://localhost:5101/...
但是我得到退出代码(7)连接失败了
当我尝试通过curl http://testservice.api/...
进行连接时,它可以正常工作
为什么我无法与localhost:port
联系?如何通过curl localhost:port
?
答案 0 :(得分:3)
为什么我无法使用localhost:port连接?
那是因为每个容器都有自己的网络接口,因此它拥有自己的本地主机'。
如何通过curl localhost:port从docker容器内连接到另一个容器?</ p>
您可以在每个撰写服务中使用network_mode: "host"
,因此每个容器都使用相同的主机网络接口。不过,我建议您调整您的应用程序以使其可配置,以便将其服务依赖关系URL作为参数(例如)。
答案 1 :(得分:0)
当你在容器内部说localhost时,它将读作容器本身。使容器能够与其他容器通信。您需要确保这些容器连接在同一网络上,然后您可以尝试通过其DNS(其服务名称)或其容器IP访问它们。