Я экспериментирую со стеком Spring Cloud Netflix и Spring Cloud Config Server и клиентами.
Для этого я установил минимальный пример, как показано в следующем файле docker-compose.
version: '3'
services:
#Eureka Service
discovery:
container_name: discovery
image: jbprek/discovery:latest
ports:
- "8761:8761"
#Spring cloud config server
configservice:
container_name: configserver
image: jbprek/configserver:latest
ports:
- "8888:8888"
depends_on:
- discovery
#Example microservice using discovery and spring cloud config
constants-service:
container_name: constants-service
ports:
- "8080:8080"
image: jbprek/constants-service:latest
depends_on:
- discovery
- configservice
Реализация discovery и configserver минимальна после различных примеров, и полный код может быть клонирован следующим образом:
git clone https://prek@bitbucket.org/prek/boot-netflix-problem.git
Когда весенний клиент конфигурации облака "constants-service" использует следующую конфигурацию в начальной загрузке. свойства
spring.application.name=constants-service
spring.cloud.config.uri=http://configserver:8888
тогда, кажется, все работает нормально, включая регистрацию с помощью "Eureka" и извлечение конфигурации из configserver.
Затем поиск по серверу config путем обнаружения, а затем извлечение конфигурации из constant-serviceЯ изменяю файл bootstrap.properties следующим образом:
spring.application.name=constants-service
#Lookup through Eureka
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.service-id=CONFIGSERVER
Приведенное выше изменение предотвращает подключение «constants-service» к eureka, используя имя хоста Eureka, localhost вместо discovery и оба. поиск службы configserver и самостоятельная регистрацияture with Eureka fail.
application.properties для обнаружения:
server.port=8761
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
application.properties для configserver:
server.port=8888
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
eureka.client.service-url.defaultZone=http://discovery:8761/eureka
spring.cloud.config.server.git.uri=https://bitbucket.org/prek/boot-netflix-problem-config-data.git
spring.cloud.config.server.git.clone-on-start=true
spring.cloud.config.server.git.force-pull=true
spring.cloud.config.discovery.enabled=false
А для констант служба есть:
spring.application.name=constants-service
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
eureka.client.service-url.defaultZone=http://discovery:8761/eureka
Может кто-нибудь посоветовать указанную выше конфигурацию?
Обновление
В соответствии с ответом, предоставленным ниже @nmyk для службы констант, которая является Eureka (discovery) клиент и клиент Spring Cloud Config, конфигурация для обнаружения и конфигурации должна содержаться в файлах bootstrap.properties, поэтому приведенные выше примеры файла boostrap.properties для службы констант могут быть следующими:
spring.application.name=constants-service
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
eureka.client.service-url.defaultZone=http://discovery:8761/eureka
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.service-id=CONFIGSERVER