Как получить докер ip и порт в весеннем загрузочном файле bootstrap.yml - PullRequest
2 голосов
/ 02 мая 2019

Я пытаюсь настроить проверку работоспособности моего приложения микро-службы в консуле, которое будет работать в док-контейнере.

Для настройки проверки работоспособности привода на консул я попытался использовать $ {server.address} в качестве адреса хоста, но он дает мне идентификатор контейнера докера.

Вот так вот bootstrap.yml

spring:
  cloud:
    consul:
      scheme: http
      host: consul.service.consul
      port: 8500
      config:
        format: YAML
        prefix: apps
        data-key: config
        default-context: ${spring.application.name}
      discovery:
        health-check-path: /actuator/health
        healthCheckInterval: 20s
        scheme: http
        enabled: true
        address: ${server.address}
  main:
    allow-bean-definition-overriding: true

локально без докера, он может правильно разрешить адрес, но с удаленным докером он возвращает идентификатор контейнера.

Есть предложения?

1 Ответ

0 голосов
/ 02 мая 2019

Проблема, с которой вы можете столкнуться при работе внутри контейнера Docker, заключается в том, что при попытке восстановить hostname или IP Address вы получите внутренний Docker hostname и внутренний IP Address.

* 1006.* Решение, которое я использовал в аналогичных проблемах, заключается в следующем:
  • Вставить имя хоста Docker Host при создании контейнера.
  • Предоставить порт контейнера в Docker Host

Например:

  • Задайте свойство для получения адреса извне:

    discovery:
       health-check-path: /actuator/health
       healthCheckInterval: 20s
       scheme: http
       enabled: true
       address:${HOSTNAME:server.address}
    
  • Когдазапустив свой контейнер, укажите значение свойства HOSTNAME:

    docker run -e HOSTNAME=myhostname.mydomain.com -p 8500:8500 my_docker_image
    

При этом конечная точка, которую вы определяете в своей службе, будет доступна для всех, кто проводит проверки работоспособности извне.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...