2016-09-19 136 views
0

我有2個微服務(spring啓動應用程序)在不同的docker容器中運行,並配置了zuul api網關。路由到其他容器不起作用。容器1在8030端口運行&容器2上的端口8030。使用zuul不工作路由到docker中的不同容器

下面運行是在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 

當通過本地主機訪問:8030/zuultest /測試我得到的例外爲 -

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 

我可以知道爲什麼我得到這個嗎?

回答

0

你是怎麼開始2個容器的?如果您將它們暴露給docker主機,兩者都不能具有相同的端口。

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

沒有這一點,如果要調用本地主機:8030,您呼叫的主機(不是容器),和你沒有得到迴應。

您需要的端口映射到主機當你與不同的端口啓動它們,並與本地主機打電話給他們,右暴露端口

1

您可以使用鏈接選項,在泊塢窗,compose.yml之間的鏈接兩個容器。

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

然後在zuul:擊潰:URL配置可以使用conatiner名,DEMO2,而不是它的IP。