Jhipster应用Registry容器启动失败求助:Docker Compose执行报错
从错误日志的核心异常java.lang.IllegalArgumentException: Unable to resolve Configuration with the provided Issuer of "http://keycloak:9080/realms/jhipster"来看,问题出在Registry无法连接到Keycloak获取OAuth2配置,以下是常见原因:
Keycloak容器未正常运行
检查Keycloak容器的状态,执行docker-compose ps查看keycloak服务是否处于up状态。如果容器未启动或启动失败,查看Keycloak的日志定位启动问题。容器网络不通
Registry和Keycloak容器需要处于同一个Docker网络才能通过服务名keycloak互相访问。确认两个容器是否在同一网络中:如果是通过不同的docker-compose文件启动,需要手动将它们连接到同一网络;如果是同一个compose文件,确保配置了自定义网络或使用默认网络且服务名解析正常。Keycloak的
jhipsterRealm未创建
登录Keycloak控制台(默认地址http://localhost:9080),检查是否存在名为jhipster的Realm。如果第一次启动Keycloak时初始化脚本未执行成功,会导致Realm缺失,Registry无法获取对应的OAuth2配置。Registry启动过早,Keycloak未就绪
Keycloak首次启动需要初始化数据库和Realm,耗时较长。如果Registry在Keycloak完全就绪前启动,就会出现连接失败。可以在docker-compose配置中给Registry添加依赖和健康检查:
在Registry服务配置中添加:depends_on: keycloak: condition: service_healthy同时给Keycloak服务添加健康检查:
healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9080/realms/jhipster/.well-known/openid-configuration"] interval: 10s timeout: 5s retries: 5Issuer地址配置错误
检查Registry的配置文件(如application.yml)或环境变量中,spring.security.oauth2.client.provider.jhipster.issuer-uri的值是否正确,确认端口号、Realm名称没有拼写错误。
内容的提问来源于stack exchange,提问作者karl

