我一直在尝试使用 Spring Cloud Gateway、Eureka、配置服务和一些微服务创建一个 docker-compose 堆栈。这些服务在它们自己的、暴露的端口上启动和工作,配置服务工作并且 Eureka 注册这些服务。但是我无法让 Spring Cloud Gateway 工作。
服务正确启动(或者至少日志中没有错误),当我远程进入容器时,我能够请求我想要调用的服务,但是如果我尝试通过配置的路由请求它收到 404。
我的网关配置(为了方便,我结合了配置服务配置和 bootstrap.yml):
spring:
application:
name: gateway-service
cloud:
config:
uri: http://config-service:8080
eureka:
client:
serviceUrl:
defaultZone: http://discovery-service:8061/eureka/
logging:
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss} ${LOG_LEVEL_PATTERN:-%5p} %m%n"
spring:
cloud:
gateway:
routes:
- id: employee-service
predicates:
- "Path=/employee/**"
filters:
- StripPrefix=1
uri: "http://employee-service:8080"
Run Code Online (Sandbox Code Playgroud)
我很确定我只是误解了一些微不足道的事情,而且我离成功只有一步之遥,但是......我就是找不到它。
我期望发生的事情:
我的容器:
0.0.0.0:8080->8080/tcp, 8088/tcp employee-app_gateway-service_1
8088/tcp, 0.0.0.0:5082->5005/tcp, 0.0.0.0:8082->8080/tcp employee-app_employee-service_1
8088/tcp, 0.0.0.0:8011->8061/tcp employee-app_discovery-service_1
8088/tcp, 0.0.0.0:8012->8080/tcp employee-app_config-service_1
Run Code Online (Sandbox Code Playgroud)