0

두 가지 서비스가 있습니다.로컬 호스트 연결을 사용하도록 도커 네트워크를 올바르게 설정하는 방법은 무엇입니까?

HttpGet request = new HttpGet("http://127.0.0.1:8083/getTest"); 
HttpResponse httpResponse = httpClient.execute(request); 

나는 오류 있습니다 : 서비스 A는이 같은 서비스 B가 호출

There was an unexpected error (type=Internal Server Error, status=500). 
Connect to 127.0.0.1:8083 [/127.0.0.1] failed: Connection refused: connect 

고정 표시기 ps의 출력입니다 : 내가 고정 표시기 네트워크를

CONTAINER ID  IMAGE  COMMAND    CREATED    STATUS    PORTS     NAMES 
2a8eaf08881a  service_A "./gradlew bootRun" 5 seconds ago  Up 4 seconds  0.0.0.0:80->80/tcp  service_A 
b7436a77e438  service_B "go-wrapper run"  About an hour ago Up 4 seconds  0.0.0.0:8083->8083/tcp service_B 

만들어 :

docker network create webproxy 

고정 표시기 - compose.yml은 다음과 같습니다

version: '3' 
services: 
    service_A: 
    container_name: service_A 
    build: ./service_A 
    hostname: service_A 
    restart: always 
    ports: 
     - "8083:8083" 

    service_B: 
    container_name: service_B 
    build: ./service_B 
    hostname: service_B 
    restart: always 
    ports: 
     - "80:80"  

networks: 
    default: 
    external: 
     name: webproxy 

이 컨테이너의 IP ADDR 쇼 eth0를입니다 :

project$ docker exec -it 2a8eaf08881a ip addr show eth0 
68: [email protected]: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:13:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0 
    inet 172.19.0.2/16 scope global eth0 
     valid_lft forever preferred_lft forever 


project$ docker exec -it b7436a77e438 ip addr show eth0 
66: [email protected]: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:13:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0 
    inet 172.19.0.3/16 scope global eth0 
     valid_lft forever preferred_lft forever 

고정 표시기 네트워크 정보는 다음과 같습니다

project$ docker network ls 
NETWORK ID   NAME    DRIVER    SCOPE 
9fcac7636448  bridge    bridge    local 
83a0f3fe901d  host    host    local 
215ab1608f91  none    null    local 
95909545832d  predictor_default bridge    local 
be19665e791d  webproxy   bridge    local 

또한 컨테이너에서 172.19.0.3으로 ping을 수행 할 수 있습니다.

서비스 A와 서비스 B간에 올바르게 통신하는 방법은 무엇입니까? 각 서비스

version: '3' 
services: 
    service_A: 
    networks: 
     - webproxy 

    service_B: 
    networks: 
     - webproxy 

networks: 
    webproxy: 
    driver: bridge 
다음

당신이 요청

HttpGet request = new HttpGet("http://service_A:8083/getTest"); 
HttpResponse httpResponse = httpClient.execute(request); 
+0

사용을 서비스 이름 –

답변

0

는 작업 대답 부여하고있다 :

HttpGet request = new HttpGet("http://service_A:8083/getTest"); 
HttpResponse httpResponse = httpClient.execute(request); 
+0

불행히도, 그것 d oes는 작동하지 않습니다. "ERROR : Service"service_B "가 정의되지 않은 네트워크"webproxy "를 사용합니다. – Max

+0

@Max 여러분이 이미'webproxy' 네트워크를 가지고 있다고 생각했습니다. 업데이트 된 답변을보십시오. –

관련 문제