首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Netflix-zuul不能在码头上路由spring启动微服务api

Netflix-zuul不能在码头上路由spring启动微服务api
EN

Stack Overflow用户
提问于 2019-04-22 01:34:52
回答 2查看 2.5K关注 0票数 1

当我在码头容器中部署我的zuul网关服务并测试它时,我得到了"出现了一个意外错误(type=Internal服务器错误,status=500)“错误。但是在windows中,当我在eclipse中运行应用程序时,一切都很正常,我可以通过zuul网关端口访问服务,也可以通过网关使用与postman的每一个映射。但它在码头集装箱里不起作用。

ZuulGatewayServerApplication.java;

代码语言:javascript
复制
@EnableEurekaClient
@EnableZuulProxy
@SpringBootApplication
@EnableDiscoveryClient
public class ZuulGatewayServerApplication {

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

zuul-网关服务的application.properties文件;

代码语言:javascript
复制
server.port=8762
spring.application.name=t-zuul-server
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka

zuul.ignored-services=*

zuul.routes.t-author-bookstore.path=/author/**
zuul.routes.t-author-bookstore.service-ıd=t-author-bookstore
#zuul.routes.t-author-bookstore.strip-prefix=false

zuul.routes.t-book-bookstore.path=/book/**
zuul.routes.t-book-bookstore.service-ıd=t-book-bookstore
#zuul.routes.t-book-bookstore.strip-prefix=false
#... there is also 4 more services

我还尝试将这些代码添加到application.properties文件中,用于zuul网关服务;

代码语言:javascript
复制
eureka.client.registerWithEureka = true
eureka.client.register-with-eureka=true
ribbon.eureka.enabled=true
zuul.routes.${service_name}.strip-prefix=false

在docker中,对于zuul网关服务,我的Dockerfile是这样的

代码语言:javascript
复制
FROM openjdk:8-alpine
VOLUME /tmp
COPY t-zuul-gateway-server-1.0.jar t-zuul-app.jar
EXPOSE 8762
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/t-zuul-app.jar"]

这就是我如何开始码头图像

代码语言:javascript
复制
docker run -d --network=bookstore-mongodb -p 8761:8761 --name t-eureka-server t-eureka-server-1.0
docker run -d --network=bookstore-mongodb -p 8762:8762 --name t-zuul-servicee --link=mongo --rm -e EUREKA_CLIENT_SERVICEURL_DEFAULTZONE=http://localhost:8761/eureka t-zuul-gateway-server-1.0
docker run -d --network=bookstore-mongodb -p 8052:8052 --name t-book-bookstore --link=mongo --rm -e EUREKA_CLIENT_SERVICEURL_DEFAULTZONE=http://localhost:8761/eureka t-book-bookstore-1.0

8052端口正在按预期工作。

这是我的码头容器进程的样子(码头ps):这里

我还尝试将zuul网关服务与其他容器连接起来。但没起作用。

相同的代码在窗口中工作正常,但在码头容器中却不起作用。我希望将网关与码头容器中的服务连接起来。谢谢你的点击率。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-25 15:51:26

除本代码外,其余代码均为正确;

代码语言:javascript
复制
zuul.routes.xyz.service-ıd=xyz

应该是这样的;

代码语言:javascript
复制
zuul.routes.xyz.serviceId=xyz

而且,对于每个服务,该服务id必须与spring.application.name值相同。

实际上,我不知道为什么eclipse会建议,但正确的代码是我提到的第二个代码。

票数 -1
EN

Stack Overflow用户

发布于 2019-04-24 14:31:29

我不是百分之百确定,但我认为这是因为你的祖尔不能连接到尤里卡。我想原因是您使用localhost作为Eureka的地址,但是localhost也在容器中定义,并指向它,而不是您的主机。

你试过用码头写作吗?在撰写文件中,您可以执行如下操作:

代码语言:javascript
复制
version: '3.3'
services:
    eureka:
        image: t-eureka-server-1.0
        ports:
            - "8761:8761"

    zuul:
        image: t-zuul-gateway-server-1.0
        ports:
            - "8762:8762"
        depends_on:
            - "eureka"
        links:
            - "eureka:eureka"

    bookstore:
        image: t-book-bookstore-1.0
        ports:
            - "8052:8052"
        links:
            - "eureka:eureka"

当然,您需要添加mongo才能使其工作,但您可以检查Zuul是否可以连接到Eureka。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55788207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档