java 云配置收到来自Eureka 服务器的请求执行错误,端点=DefaultEndpoint{ serviceUrl ='http://localhost:8761/}

mbzjlibv  于 2023-03-11  发布在  Java
关注(0)|答案(4)|浏览(275)

我尝试为我的4个微服务实现Discovery First Bootstrap。第一个是从git获取配置的配置服务器,第二个是Eureka 服务器。当我运行docker-composition up时,我的配置服务器无法注册到Eureka。我得到:

我的配置服务器

@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中的localhost。**我的工作配置

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
d8tt03nd

d8tt03nd1#

您的配置服务器和Eureka 服务器都在Docker中运行。因此,它们可以在Docker中使用它们的名称彼此连接,而不是localhost
因此,Eureka 服务URL应为:http://eurekaserver:8761/ .
您应该将下面的代码添加到docker-compose.yml中的configserver配置中:

links:
    - eurekaserver
pkmbmrz7

pkmbmrz72#

在应用程序属性文件中添加以下内容:
Eureka .客户端.带有eureka的注册表=假eureka.客户端.获取注册表=假
这使您的Eureka 服务器在默认端口8080上运行,这些属性也有助于您不将eurekaServer注册到其自身。
(EurekaServer本身也是一个客户端。
如果要在端口8761上运行此服务器,请在www.example.com文件中添加以下application.properties内容:
服务器。端口=8761
PS-当你不在使用Docker时它会有帮助。

rqqzpn5f

rqqzpn5f3#

我没有使用docker,但我得到了同样的错误,我在网上搜索了很多,但没有找到任何东西。
然后我只是停止服务器和更新我的maven依赖项一次,然后试图启动它的服务发现。它的工作!!
我希望这将有助于某人,谁是不使用和 Docker 和得到相同的。
P.S.-还要确保在application.propertiesapplication.yml中包含这些配置

server.port=8761
spring.application.name=eureka-discovery
eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false 
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone: http://localhost:8761/eureka
ujv3wf0j

ujv3wf0j4#

在我的例子中,devtool是罪魁祸首,请删除依赖项,然后执行maven清理和安装。我希望它能解决问题,前提是上面提到的所有属性都在属性或yml文件中。

相关问题