Не удалось вызвать запрос: org.apache.http.conn.HttpHostConnectException: подключиться к host.docker.internal:8085

У меня есть приложение (служба REST), подключающееся к Keycloak для аутентификации, и оба они запускаются с использованием одного и того же файла компоновки докеров (сеть по умолчанию). Keycloak и приложение работают абсолютно нормально, когда вызывается API.

Когда приложение какое-то время не используется, и снова вызывается тот же API, я получаю следующую ошибку.

iam       | {"timestamp":"2022-11-18T12:25:47.055+0000","message":"fail to generate token","logger_name":"com.xxxxx.xxx.xxxxxxxxxxx.AuthController","thread_name":"http-nio-8081-exec-9","level":"ERROR","level_value":40000,"stack_trace":"javax.ws.rs.ProcessingException: RESTEASY004655: Unable to invoke request: org.apache.http.conn.HttpHostConnectException: Connect to host.docker.internal:8085 [host.docker.internal/192.168.65.2] failed: Operation timed out (Connection timed out)\n\tat org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.invoke(ApacheHttpClient4Engine.java:341)\n\tat org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:464)\n\tat org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invokeSync(ClientInvoker.java:152)\n\tat org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:115)\n\tat org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76)\n\tat 

Однако по истечении тайм-аута... последовательный вызов API работает.

Не уверен, почему я получаю сообщение об ошибке выше, если приложение остается бездействующим (может быть срок действия токена, но это не должно приводить к тайм-ауту подключения)

Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
0
76
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Что ж, я не мог понять основную причину, но следующие изменения решили проблему.

  1. Добавление сетевого элемента, как показано ниже, и
  2. Назначение IP каждому сервису
  3. Указание на правильный IP-адрес Keycloak в моем определении службы приложений.
keycloak:
  image: xxxx
  container_name: keycloak
  networks:
    my-network:
      ipv4_address: 172.29.1.2  
  ports:
    - 8085:8080
app:
  image: xxxx
  container_name: app
  environment:
    KEYCLOAK_HOST: http://172.29.1.2:8080
  networks:
    my-network:
      ipv4_address: 172.29.1.3
  ports:
    - 8081:8081
networks:   
  my-network:
    ipam:
      driver: default
      config:
        - subnet: 172.29.0.0/16

Другие вопросы по теме