Я разрабатываю проект, используя Spring Boot Cloud с Eureka.Когда я запускаю все на моей машине, все работает нормально.Но когда я начинаю использовать Docker:
- , если я помещаю EurekaServer в контейнер Docker и запускаю его, все сервисы на localhost могут зарегистрироваться на нем
- , если я помещаю сервис в контейнер Docker изапустить его, он не может зарегистрироваться ни на EurekaServer, работающем на локальном хосте, ни на EurekaServer, работающем в контейнере Docker
У меня также есть Cloud Config Server, работающий на localhost: 8888, и сервисы в контейнере Docker не могут получить к нему доступ.Пробовал запускать все это в docker-compose, в докерском стеке, ничего из этого не работает.
bootstrap.yml для сервера Eureka:
spring:
application:
name: conhub-eureka-server
cloud:
config:
uri:
- http://localhost:8888
server:
port: 8761
eureka:
client:
register-with-eureka: false
fetch-registry: false
Dockerfile для сервера Eureka (я использую плагин fabric8 docker maven):
FROM openjdk
VOLUME /tmp
ADD maven/conhub-eureka-server-0.0.1-SNAPSHOT.jar myapp.jar
RUN sh -c 'touch /myapp.jar'
EXPOSE 8761
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-
jar","/myapp.jar"]
bootstrap.yml, например, для службы (это шлюз zuul):
server:
port: 8765
spring:
cloud:
config:
enabled: true
uri: http://localhost:8888
application:
name: conhub-gateway
eureka:
client:
service-url:
default-zone: http://${EUREKA_SERVER_HOST:localhost}:8761/eureka
Dockerfile, например, для службы:
FROM openjdk
VOLUME /tmp
ADD maven/conhub-gateway-0.0.1-SNAPSHOT.jar myapp.jar
RUN sh -c 'touch /myapp.jar'
EXPOSE 8765
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-
jar","/myapp.jar"]
У меня естьпрочитал много постов здесь и попробовал все, но безуспешно.Наверное, самым большим сюрпризом для меня является то, что служба в контейнере не может получить доступ в моем случае http://localhost:8888 для конфигов?Я могу легко получить к нему доступ вручную.
РЕДАКТИРОВАТЬ 2 Ну, я наконец-то нашел ошибку.В EurekaClient правильный способ записи зоны delault для EurekaServer: defaultZone not default-zone .Благодаря этому сообщению