Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot Eureka、ZUUL、Docker在网桥网络上编写java.net.ConnectException:连接被拒绝_Spring Boot_Docker Compose_Spring Cloud_Netflix Zuul_Netflix Eureka - Fatal编程技术网

Spring boot Eureka、ZUUL、Docker在网桥网络上编写java.net.ConnectException:连接被拒绝

Spring boot Eureka、ZUUL、Docker在网桥网络上编写java.net.ConnectException:连接被拒绝,spring-boot,docker-compose,spring-cloud,netflix-zuul,netflix-eureka,Spring Boot,Docker Compose,Spring Cloud,Netflix Zuul,Netflix Eureka,我在单独的docker容器上运行Zuul服务和Eureka服务,这两个容器的配置都是最低限度的,都是spring boot项目 尤里卡: docker-compose.xml: version: '2' services: app: build: context: ./ image: eureka environment: eureka.client.serviceUrl.defaultZone: http://eurekaserver_app

我在单独的docker容器上运行Zuul服务和Eureka服务,这两个容器的配置都是最低限度的,都是spring boot项目

尤里卡:

docker-compose.xml:

version: '2'
services:
  app:
    build:
      context: ./
    image: eureka
    environment:
      eureka.client.serviceUrl.defaultZone: http://eurekaserver_app_1:8070/eureka/
    tty: false
    network_mode: bridge
    ports:
      - 8070:8070
version: '2'
services:
  app:
    build:
      context: ./
    image: zuul-service
    environment:
      eureka.client.serviceUrl.defaultZone: http://eurekaserver_app_1:8070/eureka/
    tty: false
    ports:
      - 8069:8069
    network_mode: bridge
DockerFile:

FROM java:8
COPY ./build/libs/eureka-server-0.0.1-SNAPSHOT.jar /usr/src/eureka/
WORKDIR /usr/src/eureka
EXPOSE 8070
CMD ["java","-jar","eureka-server-0.0.1-SNAPSHOT.jar"]
FROM java:8
COPY ./build/libs/zuul-service-0.0.1-SNAPSHOT.jar /usr/src/item/
WORKDIR /usr/src/item
EXPOSE 8069
ENTRYPOINT ["java","-jar","zuul-service-0.0.1-SNAPSHOT.jar"]
祖尔:

docker-compose.xml:

version: '2'
services:
  app:
    build:
      context: ./
    image: eureka
    environment:
      eureka.client.serviceUrl.defaultZone: http://eurekaserver_app_1:8070/eureka/
    tty: false
    network_mode: bridge
    ports:
      - 8070:8070
version: '2'
services:
  app:
    build:
      context: ./
    image: zuul-service
    environment:
      eureka.client.serviceUrl.defaultZone: http://eurekaserver_app_1:8070/eureka/
    tty: false
    ports:
      - 8069:8069
    network_mode: bridge
DockerFile:

FROM java:8
COPY ./build/libs/eureka-server-0.0.1-SNAPSHOT.jar /usr/src/eureka/
WORKDIR /usr/src/eureka
EXPOSE 8070
CMD ["java","-jar","eureka-server-0.0.1-SNAPSHOT.jar"]
FROM java:8
COPY ./build/libs/zuul-service-0.0.1-SNAPSHOT.jar /usr/src/item/
WORKDIR /usr/src/item
EXPOSE 8069
ENTRYPOINT ["java","-jar","zuul-service-0.0.1-SNAPSHOT.jar"]
我使用了network ls-no trunc Docker命令来确保他们没有启动新的网络:

NETWORK ID                                                         NAME                DRIVER              SCOPE
ba216f3e01bb168848074a99875666fe382a4eda15daad0c428a8102707ee49f   bridge              bridge              local
a63a8adf0fd162d9b99bdf77bc4a13c0bfcfb8a9aca3c5375e60d5df5c5e305d   host                host                local
2debbe96f8a96fdd8d6da983877609e0bdb7a1df6b25537f35f1608de0739fc7   none                null                local
这似乎没问题,问题是Eureka容器启动正常,但当我使用docker compose up时,zuul服务不正常。它抛出:

com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused (Connection refused)
app_1  |    at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:187) ~[jersey-apache-client4-1.19.1.jar!/:1.19.1]
app_1  |    at com.sun.jersey.api.client.filter.GZIPContentEncodingFilter.handle(GZIPContentEncodingFilter.java:123) ~[jersey-client-1.19.1.jar!/:1.19.1]
app_1  |    at com.netflix.discovery.EurekaIdentityHeaderFilter.handle(EurekaIdentityHeaderFilter.java:27) ~[eureka-client-1.8.6.jar!/:1.8.6]
app_1  |    at com.sun.jersey.api.client.Client.handle(Client.java:652) ~[jersey-client-1.19.1.jar!/:1.19.1]
app_1  |    at com.sun.jersey.api.client.WebResource.handle(WebResource.java:682) ~[jersey-client-1.19.1.jar!/:1.19.1]
app_1  |    at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74) ~[jersey-client-1.19.1.jar!/:1.19.1]
app_1  |    at com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:509) ~[jersey-client-1.19.1.jar!/:1.19.1]
app_1  |    at com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient.getApplicationsInternal(AbstractJerseyEurekaHttpClient.java:194) ~[eureka-client-1.8.6.jar!/:1.8.6]
我很不确定我在这里遗漏了什么?

官方文件说:

默认情况下,Compose为应用程序设置单个网络。每个 服务的容器加入默认网络,并且是 可由该网络上的其他容器访问,并可由 它们的主机名与容器名称相同

我建议您为这两个应用程序创建一个docker-compose.yaml文件,正确命名它们,并将docker文件分离到不同的文件夹:

version: '2'
services:
  eureka:
    build:
      context: ./eureka/
    image: eureka
    environment:
      eureka.client.serviceUrl.defaultZone: http://eureka:8070/eureka/
    tty: false
    ports:
      - 8070:8070
  zuul:
    build:
      context: ./zuul/
    image: zuul-service
    environment:
      eureka.client.serviceUrl.defaultZone: http://eureka:8070/eureka/
    tty: false
    ports:
      - 8069:8069 

当容器启动时,它们将能够通过eureka:8070和zuul:8069相互通信。

我尝试了这一点,但没有成功,然后我还尝试在同一docker-compose.xml中分别向两个应用程序添加:network\u mode:bridge,它给我带来了新的错误,即:om.sun.jersey.api.client.ClientHandlerException:java.net.UnknownHostException:eureka:Name或service notknown@vaibhav这是我答错了。我已经更正了zuul块中的eureka.client.serviceUrl.defaultZone环境变量。是的,我可以理解,仍然没有运气,我不确定这个问题是否是因为zuul/eureka中的某些配置,因为在我看来,从docker的角度来看,一切似乎都很好。问题是:网络模式:桥接一旦我删除了它,并为两个容器使用了单个docker compose。。成功了!