2016-09-19 2 views
0

Ich habe 2 Microservices (Spring Boot-App) in verschiedenen Docker Container laufen und konfiguriert mit zuul api Gateway. Das Routing zu einem anderen Container funktioniert nicht. Der Behälter 1 wird in 8030-Anschluss läuft & Behälter 2 laufen auf Port 8030.Routing zu anderen Container in Docker mit Zuul funktioniert nicht

Unten ist die zuul Konfiguration in application.yml -

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 

Wenn der Zugriff durch localhost: 8030/zuultest/test ist immer die Ausnahme als -

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 

Kann ich wissen, warum ich das bekomme?

Antwort

0

Wie haben Sie die 2 Container gestartet? Beide können nicht denselben Port haben, wenn Sie sie dem Docker-Host zur Verfügung gestellt haben.

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

Ohne diese, wenn Sie localhost anrufen: 8030, die Sie anrufen, den Host (nicht der Behälter), und Sie werden keine Antwort bekommen.

Sie müssen den Anschluss an den Host kartieren, wenn Sie sie mit verschiedenen Ports zu starten, und rufen sie mit localhost nach rechts ausgesetzt Port

1

Sie Links-Option in der Docker-compose.yml können zwischen verlinken die zwei Behälter.

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

Dann in den zuul: router: url Konfiguration können Sie den conatiner Namen verwenden, demo2 statt es ist IP.

Verwandte Themen