我有两个微服务
如果我在本地单独运行服务,它工作正常,并且服务注册到 ruke 服务注册表。
但是当我使用 docker-compose 运行服务时,它们单独运行,单独运行良好,但网关服务未在 eureka 服务注册表上注册
以下是配置文件 网关服务eureka配置(applicaiton.yml)
spring:
cloud:
gateway:
routes:
- id: identity-service
uri: lb://IDENTITY-SERVICE
predicates:
- Path=/auth/**
application:
name: SWIGGY-GATEWAY
eureka:
client:
service-url:
defaultZone : http://localhost:8761/eureka/
Eureka 服务注册表配置(applicaiton.yml)
eureka:
client:
register-with-eureka: false
fetch-registry: false
server:
port: 8761
docker-compose.yml 来运行服务
version: '3.1'
services:
gateway:
image: 'gateway:latest'
build:
context: ./swiggy-gateway
dockerfile: Dockerfile
container_name: gateway
networks:
- test-network
ports:
- "8080:8080"
depends_on:
- eureka
eureka:
image: 'eureka:latest'
build:
context: ./swiggy-service-registry
dockerfile: Dockerfile
container_name: eureka
networks:
- test-network
ports:
- "8761:8761"
networks:
test-network:
driver: bridge
我尝试过有网络和没有网络的 docker-compose
我通过将 eureka 默认区域添加为每个微服务的服务中的环境变量来解决这个问题
environment:
SPRING_CLOUD_DISCOVERY_ENABLED: true
EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://eureka:8761/eureka/