如何让本地主机上的两个Docker容器实现相互通信?
解决Docker容器前后端Connection Refused问题
这个问题我碰到过好多次了,核心原因是你前端代码里的localhost:8090指向不对——容器里的localhost是前端容器自己的本地回环,根本找不到后端容器。哪怕你把两个容器加到同一网络,用localhost也没用,得用容器名称来做DNS解析。咱们一步步来解决:
1. 创建自定义Docker网络
默认的bridge网络虽然能让容器互通,但自定义网络支持自动的容器名DNS解析,用起来更靠谱:
docker network create app-network
2. 启动后端容器并加入网络
启动的时候给后端容器起个明确的名字(比如back-end),同时指定加入刚才创建的网络:
docker run -p 8090:8090 --network app-network --name back-end -d repo/back-end
3. 启动前端容器并加入同一网络
同样把前端容器加入app-network:
docker run -p 8080:8080 --network app-network --name front-end -d repo/front-end
4. 修改前端接口地址
把前端代码里的localhost换成后端容器的名称back-end,这样Docker的DNS会自动把这个名称解析成后端容器的IP:
protected <T> ResponseEntity<T> getRequest(String path, Class<T> responseType) { return restTemplate.getForEntity("http://back-end:8090/" + path, responseType); }
额外注意点
- 确保后端服务确实在容器内部监听
0.0.0.0:8090(而不是只监听127.0.0.1),不然即使网络通了也访问不到 - 如果后续用Docker Compose来管理容器会更省心,它默认会创建专属网络,直接用服务名就能互相访问
内容的提问来源于stack exchange,提问作者BeerEye
相关产品推荐
相关产品推荐

