Не удается отправить HTTP-запрос в другой докер-контейнер - PullRequest
0 голосов
/ 24 июня 2019

Когда я пытаюсь отправить HTTP-запрос из одного контейнера в другой, я получаю

(соединение отказано); Вложенное исключение - java.net.ConnectException

Я уверен, что причиной ошибки является неверный адрес. Хотя я проверил подобные проблемы, я не смог исправить это сам.

Dockerfile mainApp (тот, который отправляет запросы)

FROM openjdk:8
ADD target/mainApp.war mainApp.war
EXPOSE 8078
ENTRYPOINT ["java", "-jar", "mainApp.war"]

Здесь я делаю запрос

String pepAddress =  "http://microservice3:8080";

public ResponseEntity<String> getUser() {

       RestTemplate restTemplate = new RestTemplate();
       restTemplate.setErrorHandler(new ErrorHandler());

        SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
        Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 1080));
        requestFactory.setProxy(proxy);
        restTemplate.setRequestFactory(requestFactory);

        UriComponentsBuilder builder = UriComponentsBuilder
                .fromHttpUrl(pepAddress + "/getUser")
                .queryParam("userId","1");

        HttpEntity<?> httpEntity = new HttpEntity<>(httpHeaders);

        ResponseEntity<String> result = restTemplate
                .exchange(builder.toUriString(),
                            HttpMethod.GET,
                            httpEntity,
                            String.class);
        return result;
    }

SecondApp Dockerfile

FROM openjdk:8
ADD target/PEP.war PEP.war
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "PEP.war"]

И докер-compose.yml

version: '2'
services:
  microservice1:
    image: mainapp
    expose:
      - 8078
    networks:
      - test

  microservice3:
    image: pep
    expose:
      - 8080
    networks:
      - test

networks:
  test: 
    external: true
...