我遇到麻烦让Zuul使用dockerized Spring启动应用程序 . 似乎Zuul无法将请求代理到目标应用程序(gis_import_export),即使它已启动并正在运行 .
我的Zuul基于Spring的app配置:
spring:
banner:
location: classpath:banner.txt
zuul:
debug:
request: true
routes:
ie:
url: http://gis_import_export:8080
geoserver:
url: http://geoserver:8080
geonetwork:
url: http://geonetwork:8080
ribbon:
eureka:
enabled: false
和我的docker-compose.yml文件:
version: "3"
services:
geoserver:
image: kartoza/geoserver
geonetwork:
image: geonetwork
postgres:
image: postgres
environment:
- POSTGRES_DB=xxx
- POSTGRES_PASSWORD=xxx
- POSTGRES_USER=xxx
gis_import_export:
image: gis_import_export:develop
ports:
- 8888:8080
zuul:
image: gis_api_gateway:develop
ports:
- 8080:8080
我能够通过Zuul服务暴露端口正确地代理geonetwork / geoserver,但我仍然坚持使用Spring启动应用程序似乎没有得到代理 . 顺便说一下,如果zuul本身没有通过Docker部署,那么如果通过8888端口和Zuul访问,则dockerized Spring启动应用程序可以正常工作 .
在Zuul docker容器内运行ping / telnet到dockerized spring boot应用程序按预期工作,因此正在正确解析名称 .
想法?
谢谢,FB
1 回答
您的服务在不同的docker networkd中运行 . 您必须在两个文件网络中指定相同的网络 .
当然,如果为每个容器指定hostname参数将会很好