0

我有 2 个微服务(spring boot 应用程序)在不同的 docker 容器中运行并配置了 zuul api 网关。路由到其他容器不起作用。容器 1 在 8030 端口运行,容器 2 在 8030 端口运行。

下面是application.yml中的zuul配置——

server:
  port: 8030

# TODO: figure out why I need this here and in bootstrap.yml

spring:
  application:
    name: zuul server

endpoints:
  restart:
    enabled: true
  shutdown:
    enabled: true
  health:
    sensitive: false

zuul:
  routes:
    zuultest:
         url: http://localhost:8080
         stripPrefix: false 

ribbon:
  eureka:
    enabled: false

当通过 localhost:8030/zuulttest/test 访问时,我得到的异常是 -

2016-09-19 09:10:14.597  INFO 1 --- [nio-8030-exec-3] hello.SimpleFilter                       : GET request to http://localhost:8030/zuultest/test
2016-09-19 09:10:14.600  WARN 1 --- [nio-8030-exec-3] o.s.c.n.z.filters.post.SendErrorFilter   : Error during filtering

我能知道我为什么会得到这个吗?

4

2 回答 2

2

您可以使用 docker-compose.yml 中的链接选项来链接两个容器。

demo1:
  image: <demo1 image name>
  links: - demo2
demo2:
  image: <demo2 image name>

然后在zuul:routs:url配置中,您可以使用容器名称 demo2  不是它的 IP。

于 2017-01-08T18:24:48.213 回答
0

你是如何启动这两个容器的?如果您将它们暴露给 docker 主机,则两者不能具有相同的端口。

docker run --name service A --net=host -p 8030:8030 ...
docker run --name service B --net=host -p 8030:8031 ...

没有这个,如果你调用 localhost:8030,你调用的是主机(而不是容器),你没有得到响应。

当您使用不同的端口启动它们时,您需要将端口映射到主机,并使用 localhost 调用它们到正确的暴露端口

于 2016-09-28T19:08:27.250 回答