当前位置: 首页 > 知识库问答 >
问题:

Zuul网关无法连接到Docker-Compose下的Eureka service registry

公冶子琪
2023-03-14

当我通过Spring-Boot可运行的jar文件独立启动Eureka和Zuul时,一切似乎都运行得很好。但是当我尝试在Docker容器中运行每一个并将它们与Docker-Compose连接时,Zuul网关无法找到Eureka服务器。

docker-compose.yml

version: '3.6'

services:

 eureka-serviceregistry:
  container_name: serviceregistry
  build: ./ServiceRegistry
  ports:
   - "8761:8761"
  hostname: serviceregistry
  environment:
    eureka.client.serviceUrl.defaultZone: http://serviceregistry:8761/eureka/

 zuul-edgeservice:
  container_name: gateway
  build: ./ServiceGateway
  ports:
   - "8080:8080"
  hostname: gateway
  environment:
      eureka.client.serviceUrl.defaultZone: http://serviceregistry:8761/eureka/
FROM openjdk:8-jdk-alpine

# Add Spring Boot app.jar to Container
COPY /build/libs/ServiceRegistry-0.0.1-SNAPSHOT.jar /usr/local/ServiceRegistry.jar

EXPOSE 8761

# Fire up our Spring Boot app by default
ENTRYPOINT [ "sh", "-c", "java -Djava.security.egd=file:/dev/./urandom -jar /usr/local/ServiceRegistry.jar" ]
server.port=8761

spring.application.name=EurekaServiceRegistry

eureka.client.register-with-eureka=true
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka
eureka.instance.hostname=EurekaServiceRegistry

logging.level.com.netflix.eureka=INFO
logging.level.com.netflix.discovery=INFO
@EnableEurekaServer
@SpringBootApplication
public class QQServiceRegistry {

    public static void main(String[] args) {
        SpringApplication.run(QQServiceRegistry.class, args);
    }
}
FROM openjdk:8-jdk-alpine

# Add Spring Boot app.jar to Container
COPY /build/libs/ServiceGateway-0.0.1-SNAPSHOT.jar /usr/local/ServiceGateway.jar

EXPOSE 8080

# Fire up our Spring Boot app by default
ENTRYPOINT [ "sh", "-c", "java -Djava.security.egd=file:/dev/./urandom -jar /usr/local/ServiceGateway.jar" ]

Zuul应用程序.属性:

zuul.routes.auth.path=/enterprise_service/**
zuul.routes.auth.service-id=ENTERPRISE_SERVICE
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka

ZuulSpring靴类:

@EnableZuulProxy
@SpringBootApplication
public class ServiceGateway {

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

Root build.gradle文件:

buildscript {
    ext {
        springBootVersion = '2.0.1.RELEASE'
    }
    repositories {
        jcenter()
    }
    dependencies {
        classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4+"
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

subprojects {
    apply plugin: 'java'
    apply plugin: 'eclipse'
    apply plugin: 'idea'
    apply plugin: 'org.springframework.boot'
    apply plugin: 'io.spring.dependency-management'
    apply plugin: 'com.jfrog.artifactory'
    apply plugin: 'maven-publish'

    sourceCompatibility = 1.8
    targetCompatibility = 1.8

    artifactory {
        contextUrl = "${artifactory_contextUrl}"
        publish {
            repository {
                repoKey = 'gradle-dev-local'
                username = "${artifactory_user}"
                password = "${artifactory_password}"
                maven = true
            }
            defaults {
                publications ('mavenJava')
            }
        }
        resolve {
            repository {
                repoKey = 'gradle-dev'
                username = "${artifactory_user}"
                password = "${artifactory_password}"
                maven = true
            }
        }
    }

    publishing {
        publications {
            mavenJava(MavenPublication) {
                from components.java
            }
        }
    }

    artifactoryPublish {
        dependsOn assemble
    }

    dependencyManagement {
        imports {
            mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Finchley.M8'
        }
    }

    repositories {
        maven {
            url 'https://repo.spring.io/libs-milestone'
        }
    }

    dependencies {
        compile('org.springframework.boot:spring-boot-starter-actuator')
        compile('org.springframework.boot:spring-boot-starter-web')
        testCompile('org.springframework.boot:spring-boot-starter-test')
    }

   bootJar {
        launchScript()
    }
}
group = 'my.company.service.infrastructure.registry'
version = '0.0.1-SNAPSHOT'

dependencies {
    compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-server')
}
group = 'my.company.service.infrastructure.gateway'
version = '0.0.1-SNAPSHOT'

dependencies {
    compile('org.springframework.cloud:spring-cloud-starter-netflix-zuul')
    compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-client')
}

com.netflix.discovery.shared.transport.transport.exec:无法在任何已知服务器上执行>请求,请访问>com.netflix.discovery.shared.transport.decorator.retryableeurekaHttpClient.exec>ute(retryableeurekaHttpClient.java:111)~[eureka-client-1.8.6.jar!/:1.8.6]访问>com.netflix.discovery.shared.transport.decorator.eurekaHttpClient.regi>ster(EurekaHttpClientDecorator.56)~[eureka-client-1.8.6.jar!/:1.8.6]访问shared.transport.decorator.eurekaHttpClientDecorator.java:59)~[eureka-client-1.8.6.jar!/:1.8.6]在>com.netflix.discovery.shared.transport.decorator.sessioneDeurekaHttpClient.exec>ute(SessioneDeurekaHttpClient.java:77)~[eureka-client-1.8.6.jar!/:1.8.6]在>com.netflix.discovery.shared.transport.decorator.eurekaHttpClientDecorator.regi>ster(EurekaHttpClientDecor.java:56)~[eureka-client-1.8.6.jar!/:1.8.6]在com.netflix.discovery.discoveryclient.register(discoveryclient.java:829)>~[eureka-client-1.8.6.jar!/:1.8.6]at>com.netflix.discovery.instanceInforePlicator.run(instanceInforePlicator.java:10>4)~[eureka-client-1.8.6.jar!/:1.8.6]at java.util.concurrent.executors$runnableadapter.call(executors.java:511)>[NA:1.8.0_151]at java.util.concurrent.futuretask.run(Futuretask.java:266)[NA:1.8.0_151]at>java.util.concurrent.scheduledThreadPoolExecutor$scheduledFuturetask.access$201>ThreadPoolExecutor.java:180)[NA:1.8.0_151]在>java.util.concurrent.ScheduledThreadPoolExecutor.run(SchedU>ledThreadPoolExecutor.java:293)[NA:1.8.0_151]在>java.util.concurrent.ThreadPoolExecutor.runworker(ThreadPoolExecutor.java:1149)>[NA:1.8.0_151]在>java.util.concurrent.ThreadPoolExecutor.java:624)>[NA:1.8.0_151]在>java.util.concurrent.ThreadPoolExecutor.run(Thread.java:7 48)[NA:1.8.0_151]

2018-04-11 15:38:50.043错误6---[tbeatExecutor-0]>C.N.D.S.T.D.RedirectingEurekaHttpClient:请求执行错误

共有1个答案

颛孙星海
2023-03-14

尝试用eureka Server下的Application.Properties中的Spring.Application.Name=ServiceRegistry
eureka.Instance.hostName=ServiceRegistry替换。

 类似资料:
  • 问题内容: 我在Mac OS 10.8.5上安装了docker-machine 0.1.0和docker-compose 1.1.0。 Docker-machine正常运行,并且能够通过docker-machine ssh连接。 但是无法从docker-compose连接。 无法通过http + unix://var/run/docker.sock连接到Docker守护程序-它正在运行吗? 如果它

  • 问题内容: 我收到一条错误消息,提示我无法连接到Docker守护程序。我调查了其他人遇到类似问题的答案,但没有帮助。我正在运行Ubuntu 15.10版本。我将尝试提供我所有的信息。 Docker版本 Docker-Compose版本 如果我尝试停止或启动服务,就会发生这种情况。 如果我跑步 任何帮助将不胜感激。让我知道您是否需要更多信息。 问题答案: 我发现了这个问题,似乎可以解决我的问题。 G

  • 我在Mac OS 10.8.5上安装了docker-machine 0.1.0和docker-compose 1.1.0。 docker-machine运行正常,并且能够通过docker-machine SSH进行连接。 但无法从Docker-Compose连接。 无法连接到HTTP+UNIX上的Docker后台进程://var/run/Docker.sock-它正在运行吗? 如果它位于非标准位置

  • 我跟踪了服务,当它们部署在localhost中(通过eclipse)时,它们工作得很好。但在部署为单独的docker容器时无法调用rest服务。 我是一个新的docker并且参加了教程来了解这是如何工作的。 祖尔阿皮门路 用户服务 尤里卡注册服务信息 注意:“DE4396A354EA”是“用户服务”的容器id 请提供关于如何解决此问题的指导,并提供任何链接,我可以在这些链接中获得关于在docker

  • 我使用docker查看了瓶装水的github MD文件,遇到了一个关于postgresql的问题 如果我运行我会得到错误 这是我的docker compose中postgres和psql的配置。yml文件 这是我的pg_hba。配置文件 我已经做了好几天了,任何形式的帮助都将不胜感激!非常感谢。

  • 我试图运行在通过包含文件()在虚拟机中,但我无法连接到,并且在尝试连接失败时收到的消息如下所示: 如果您注意到,docker能够连接到docker compose文件中提到的其他服务,其中一个是前两行显示的。在docker compose文件中调用kibana的命令如下: 如果我做了,它会给我以下信息: 在这里发布这个问题之前,我在google上广泛搜索了这个问题,并尝试了人们对这个问题的各种建议