web-dev-qa-db-ja.com

クラウド構成でリクエスト実行エラーが発生しました。 Eurekaサーバーからのendpoint = DefaultEndpoint {serviceUrl = 'http:// localhost:8761 /}

4つのマイクロサービスにDiscoveryFirst Bootstrapの方法を実装しようとしています。1つ目はgitから構成を取得する構成サーバーで、2つ目はEurekaサーバーです。dockerを実行している場合-構成サーバーがeurekaに登録できないように構成します。次の情報があります。

リクエスト実行エラー。 endpoint = 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

bootstrap.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/

ユーレカクラス

@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イメージを使用している場合は、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
2
Artem Vlasenko

構成サーバーとEurekaサーバーはどちらもDockerで実行します。したがって、localhostではなく、Dockerでの名前を使用して相互に接続できます。

したがって、EurekaサービスのURLはhttp://eurekaserver:8761/になります。

そして、以下のコードをdocker-compose.ymlconfigserver構成に追加する必要があります。

links:
    - eurekaserver
3
Daria Pydorenko