java - 尤里卡客户端无法向尤里卡服务器注册服务
问题描述
我有两个罐子:“Eureka”和“Webportal”。
我试图在两个 docker 容器中运行它们(使用 docker-compose)。
我从 Webportal 服务容器中得到一个错误:com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
容器能够相互访问,我使用以下方法进行了检查
:-(docker exec -it {container_id} /bin/sh
附加控制台)
- wget http://192.168.1.169:8761
(获取 eureka 服务的主页)。
我读到 Eureka 无法解析主机名,社区建议的可能工作方法是使用主机 ip。
这是我的 docker-compose 文件:
version: '3'
services:
mysql:
container_name: project-mysql
image: mysql/mysql-server:5.7
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: project
MYSQL_ROOT_PASSWORD:
MYSQL_ROOT_HOST: '%'
restart: always
redis:
container_name: project-redis
image: redis:alpine
ports:
- "6379:6379"
restart: always
eureka-server:
container_name: project-eureka
image: maven:3.5-jdk-8
ports:
- "8761:8761"
working_dir: /service
volumes:
- ../project-eureka-service/target:/service
command: java -jar /service/project-eureka-service-0.0.1-SNAPSHOT.jar
restart: always
depends_on:
- redis
- mysql
webportal:
container_name: project-webportal
image: maven:3.5-jdk-8
ports:
- "9191:9191"
working_dir: /service
volumes:
- ../project-webportal/target:/service
command: java -jar /service/project-webportal-0.0.1-SNAPSHOT.jar
restart: always
depends_on:
- eureka-server
links:
- eureka-server
networks:
spring-cloud-network:
driver: bridge
这是我的门户网站服务配置:
spring.application.name=webportal-service
server.port=9191
eureka.client.service-url.default-zone=http://192.168.1.169:8761/eureka
proxy-url=http://192.168.1.169:8762
endpoint.login=/user/login
endpoint.registration=/user/userRegistration
endpoint.log-chart.daily=/presentation/getUserLogDaily
endpoint.log-chart.weekly=/presentation/getUserLogWeekly
endpoint.log-chart.monthly=/presentation/getUserLogMonthly
endpoint.user-log=/presentation/getUserLog
endpoint.user-permission-list=/user/userPermissionList
eureka.instance.prefer-ip-address=true
eureka.instance.ip-address=192.168.1.169
使用此配置,我可以从主机(通过 java -jar)运行它们,但不能通过 docker(docker-compose up)运行它们。
我应该改变什么?
编辑
修复了 Webportal 属性文件:
spring.application.name=webportal-service
server.port=9191
eureka.client.service-url.defaultZone=http://192.168.1.169:8761/eureka
proxy-url=http://192.168.1.169:8762
endpoint.login=/user/login
endpoint.registration=/user/userRegistration
endpoint.log-chart.daily=/presentation/getUserLogDaily
endpoint.log-chart.weekly=/presentation/getUserLogWeekly
endpoint.log-chart.monthly=/presentation/getUserLogMonthly
endpoint.user-log=/presentation/getUserLog
endpoint.user-permission-list=/user/userPermissionList
解决方案
试试这个配置:
eureka.client.serviceUrl.defaultZone=http://192.168.1.169:8761/eureka
推荐阅读
- r - R Forecast 'ts' 对象必须有一个或多个观测值
- graphql - 如何根据某个对象的 id 过滤订阅事件?
- flutter - DatabaseException(没有这样的表:values11(代码1):
- typescript - 如何在打字稿中的类型 [value, error] 元组中获得正确的推断
- python - 我在使用 lxml.etree.HTML 时有一个奇怪的行为
- csv - 将错误从 Azure Devops 提取到带有时间戳的状态变化的 CSV
- flutter - 检查列表内容是否为空
- angular - angular2 formGroup 的唯一值验证器
- python - 访问 Python 数据结构
- python - 从 api [Python] 调用的多个长时间运行的任务