You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决Docker环境下JHipster Control Center无法解析Keycloak地址的问题

解决Docker环境下JHipster Control Center无法解析Keycloak地址的问题

核心原因

你在宿主机hosts文件添加的keycloak映射仅对宿主机生效,Docker容器内部无法识别该映射;同时若Keycloak与Control Center不在同一Docker网络,容器之间也无法通过容器名互相访问。

解决方案

方法一:让两个容器加入同一Docker网络

  1. 创建共享网络
docker network create jhipster-shared-network
  1. 修改两个Compose配置文件
    • 打开src/main/docker/keycloak.yml,在services.keycloak节点下添加网络配置:
      networks:
        - jhipster-shared-network
      
      并在文件末尾添加网络声明:
      networks:
        jhipster-shared-network:
          external: true
      
    • 对src/main/docker/jhipster-control-center.yml执行同样的修改
  2. 重启两个容器
docker-compose -f src/main/docker/keycloak.yml down && docker-compose -f src/main/docker/keycloak.yml up -d
docker-compose -f src/main/docker/jhipster-control-center.yml down && docker-compose -f src/main/docker/jhipster-control-center.yml up -d

完成后两个容器即可通过keycloak容器名互相访问。

方法二:启动Control Center时直接添加host映射

启动容器时通过--add-host参数注入keycloak的地址映射,替换下方的宿主机IP为你实际的宿主机IP(如192.168.1.100):

docker-compose -f src/main/docker/jhipster-control-center.yml run --add-host keycloak:宿主机IP jhipster-control-center

若Keycloak也运行在容器中,可替换为Keycloak容器的实际IP,先通过以下命令查询:

docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 你的keycloak容器ID或名称

方法三:修改Control Center的认证配置

找到Control Center的配置文件(如application.yml),将Issuer地址从http://keycloak:9080/realms/jhipster修改为宿主机IP+端口的形式,示例:

spring:
  security:
    oauth2:
      client:
        provider:
          oidc:
            issuer-uri: http://宿主机IP:9080/realms/jhipster

修改后重启Control Center容器即可。


内容的提问来源于stack exchange,提问作者Vidhya - Vidhyadharan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 23:15:44