Облачный конфиг получил ошибку выполнения запроса.конечная точка = DefaultEndpoint {serviceUrl = 'http://localhost:8761/} с сервера Eureka - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь реализовать способ Discovery First Bootstrap для моих 4-х микро-сервисов.Первый - это сервер конфигурации, который принимает конфигурацию из git, а второй - сервер Eureka.Когда я запускаю docker-compose, мой сервер конфигурации не может зарегистрироваться в eureka.Я получил:

Ошибка выполнения запроса.конечная точка = DefaultEndpoint {serviceUrl = 'http://localhost:8761/} Соединение отклонено

Мой конфигурационный сервер

 @EnableConfigServer
    @EnableEurekaClient
    @SpringBootApplication
    public class ConfigServerApplication {
        public static void main(String[] args) {
            SpringApplication.run(ConfigServerApplication.class, args);
        }

application.yml

   server:
  port: 8888
spring:
  cloud:
    config:
      server:
        encrypt.enabled: false
        git:
          uri: https://github.com/Artuwok/artbook-config-repo/
          searchPaths: userservice
          username: Artuwok
          password: Civilization1986
          timeout: 10
          force-pull: true

начальная загрузка.yml

spring:
  application:
    name: configserver
  cloud:
    config:
      fail-fast: true
      discovery.enabled: true

eureka:
  client:
    registerWithEureka: true
    fetchRegistry: true
    serviceUrl.defaultZone: http://localhost:8761/eureka/

Eureca class

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }

Eureka bootstrap.yml

server:
  port: 8761
eureka:
  client:
    registerWithEureka: false
    fetchRegistry: false

docker-compose.yml с полной конфигурацией

version: '3'

services:

  configserver:
    image: configserver:1.0
    ports:
      - "8888:8888"
    depends_on:
      - eurekaserver
    restart: on-failure

  eurekaserver:
    image: eurekasvr:1.0
    ports:
      - "8761:8761"


  users_db:
    image: mysql:5.7
    container_name: users_db
    restart: always
    environment:
      - MYSQL_DATABASE=artbook
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_USER=user
      - MYSQL_PASSWORD=password
    volumes:
      - users_db:/var/lib/mysql
    ports:
      - "3306:3306"
    depends_on:
      - eurekaserver

  user-service:
    image: userservice:1.0
    ports:
      - "8080:8080"
    depends_on:
      - eurekaserver
      - configserver
    restart: on-failure
volumes:
  users_db:

Так что в итоге я смог запустить сервисы.Обратите огромное внимание на URL, по которому вы открываете сервис. Если вы используете образы Docker, вы должны использовать имя службы, а не localhost в URI и URL. Моя рабочая конфигурация

spring:
  application:
    name: configserver
  cloud:
    config:
      fail-fast: false
      discovery.enabled: false
      uri: http://configserver:8888

eureka:
  client:
    registerWithEureka: true
    fetchRegistry: true
    serviceUrl.defaultZone: http://eurekaserver:8761/eureka

1 Ответ

1 голос
/ 25 марта 2019

Сервер конфигурации и сервер Eureka работают в Docker. Таким образом, они могут соединяться друг с другом, используя свои имена в Docker, а не localhost.

Таким образом, URL службы Eureka должен быть: http://eurekaserver:8761/.

И вы должны добавить приведенный ниже код к вашей configserver конфигурации в docker-compose.yml:

links:
    - eurekaserver
...