如何让我的两个docker容器在Localhost上相互通信?
我将我的项目分为后端和前端。我现在试图在单独的docker容器中运行这两个部分,但是我被拒绝连接。我尝试在docker网络上同时运行它们,但似乎没有用。
我的Dockerfile都像
COPY ./build/libs/demo-0.0.1-SNAPSHOT.jar /usr/app/
WORKDIR /usr/app
RUN sh -c 'touch demo-0.0.1-SNAPSHOT.jar'
RUN apk add --update \
curl \
&& rm -rf /var/cache/apk/*
ENTRYPOINT ["java","-jar","demo-0.0.1-SNAPSHOT.jar"]
前端通过
调用后端protected <T> ResponseEntity<T> getRequest(String path, Class<T> responseType) {
return restTemplate.getForEntity("http://localhost:8090/" + path, responseType);
}
但是我得到了
java.net.ConnectException: Connection refused (Connection refused)
我通过以下两个容器运行
docker run -p 8090:8090 -d repo/back-end
docker run -p 8080:8080 -d repo/front-end
答案 0 :(得分:0)
在docker中,您可以创建自己的网络:
let color = UIColor(red: .random(in: 0...1),
green: .random(in: 0...1),
blue: .random(in: 0...1),
alpha: 1)
并使用docker network create myNetwork
和--net
标志在此网络内运行容器:
--name
然后,您应该能够使用前端容器中的docker run -d -p 8000:8000 --net myNetwork --name backend backend-image
docker run -d -p 8001:8001 --net myNetwork frontend-image
网址访问后端。
答案 1 :(得分:0)
感谢双方的回应,我在前端添加了一个docker-compose.yml
version: '3'
services:
frontend:
build: .
ports:
- "8080:8080"
networks:
default:
external:
name: myNetwork
和后端
version: '3'
services:
backend:
build: .
ports:
- "8090:8090"
networks:
default:
external:
name: myNetwork
然后更改我的休息服务以拨打电话
private static final String prefix = "http://backend:8090/";