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

Docker Compose部署下微服务无法连接Keycloak求助

问题描述

本地机器5432端口部署PostgreSQL,通过Docker Compose构建多Spring Boot微服务,数据库连接问题已解决,但adm服务无法连接Keycloak:

  • 初始在adm的application-local.yaml中配置Keycloak的issuer-uri为http://localhost:8083/realms/my-app,启动报错:

    Unable to resolve Configuration with the provided Issuer of "http://localhost:8083/realms/my-app"

  • 替换为容器服务名http://keycloak:8083/realms/my-app后,仍出现相同的Issuer解析失败错误
  • 本地直接运行服务时一切正常,已提供相关Dockerfile、compose.yaml、配置文件及报错日志
排查与解决步骤

1. 验证容器间网络连通性

进入adm容器内部,测试与Keycloak服务的网络连通:

docker exec -it <adm-container-name> ping keycloak
  • 如果ping不通:
    • 检查compose.yaml中adm和Keycloak是否在同一自定义网络(Compose默认生成专属网络,若手动指定多个网络需确认归属)
    • 确认Keycloak服务的container_name或服务名确实为keycloak,避免拼写错误

2. 确保Keycloak完全就绪后再启动adm

Keycloak启动耗时较长,adm可能在Keycloak未就绪时发起请求:

  • 在compose.yaml中给adm添加依赖与健康检查,等待Keycloak就绪:
    services:
      keycloak:
        # 原有配置
        healthcheck:
          test: ["CMD", "curl", "-f", "http://localhost:8083/realms/my-app/.well-known/openid-configuration"]
          interval: 10s
          timeout: 5s
          retries: 5
      adm:
        # 原有配置
        depends_on:
          keycloak:
            condition: service_healthy
    
  • 查看Keycloak日志确认服务与realm启动成功:
    docker logs <keycloak-container-name>
    
    日志需包含Realm 'my-app' created或Server started类信息

3. 检查Keycloak Realm的公开地址配置

Keycloak自身的issuer地址需与adm请求地址匹配:

  • 登录Keycloak管理控制台(本地访问http://localhost:8083/admin),进入my-app realm的Realm Settings → General
  • 将Frontend URL设置为http://keycloak:8083/(容器内部访问地址),避免Keycloak返回与adm请求不一致的issuer地址

4. 确认adm服务加载了正确的配置

验证adm确实使用了application-local.yaml:

  • 进入adm容器查看配置文件内容:
    docker exec -it <adm-container-name> cat /path/to/application-local.yaml
    
  • 检查启动命令是否指定了正确的profile,比如Dockerfile中是否有:
    CMD ["java", "-jar", "adm-service.jar", "--spring.profiles.active=local"]
    

5. 直接测试Keycloak的OIDC配置端点

在adm容器内部curl Keycloak的配置端点,确认服务可达:

docker exec -it <adm-container-name> curl http://keycloak:8083/realms/my-app/.well-known/openid-configuration
  • 返回正常JSON:网络与Keycloak服务正常,需检查Spring Boot Keycloak客户端的额外配置(比如client-id、client-secret是否正确)
  • 返回错误:根据提示(连接超时/404)进一步排查网络或Keycloak realm配置

内容的提问来源于stack exchange,提问作者dSofarts

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 02:29:55