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

Spring应用容器无法访问同网络下Keycloak容器的问题求助

Spring应用容器无法访问同网络下Keycloak容器的问题求助

大家好,我碰到了一个Docker容器间通信的棘手问题,想请各位帮忙排查下:

我开发了一个基于Spring框架的应用,用Keycloak做身份认证,在本地直接启动应用和Keycloak的时候一切正常,但把两者分别部署到独立的Docker容器后,Spring应用就没法和Keycloak通信了。

我的docker-compose.yml配置如下:

version: '3.8'
services:
  keycloak:
    image: quay.io/keycloak/keycloak:18.0
    hostname: keycloak
    environment:
      KC_DB: postgres
      KC_DB_URL: jdbc:postgresql://db:5432/app
      KC_DB_DATABASE: app
      KC_DB_USERNAME: postgres
      KC_DB_SCHEMA: public
      KC_DB_PASSWORD: root
      KEYCLOAK_ADMIN: admin
      KEYCLOAK_ADMIN_PASSWORD: password
      KEYCLOAK_USER: admin
      KEYCLOAK_PASSWORD: password
      KEYCLOAK_FRONTEND_URL: http://keycloak:8280
      KC_HOSTNAME_STRICT: "false"
      KC_EDGE: proxy
    ports:
      - 8280:8080
    command:
      - start-dev
    networks:
      - network
  security:
    container_name: security
    expose:
      - "9000"
    ports:
      - 9000:9000
    depends_on:
      - keycloak
    environment:
      - KEY_CLOAK=http://keycloak:8280
    networks:
      - network
networks:
  network:
    driver: bridge

Keycloak的配置JSON文件内容是:

{
  "realm": "Default",
  "auth-server-url": "${KEY_CLOAK}/",
  "ssl-required": "external",
  "resource": "Default",
  "verify-token-audience": true,
  "credentials": {
    "secret": "mlqYrlT2UBmKp2dcfgfdzi5xFnF35lJ"
  },
  "use-resource-role-mappings": true,
  "principal-attribute": "preferred_username"
}

部署完成后,我在浏览器访问Spring应用时,应用日志里抛出了以下错误:

2023-02-20 15:08:50.934  WARN 1 --- [qtp993370665-30] o.keycloak.adapters.KeycloakDeployment
: Failed to load URLs from http://keycloak:8280/realms/Default/.well-known/openid-configuration
org.apache.http.conn.HttpHostConnectException: Connect to keycloak:8280 [keycloak/172.31.0.5] failed: Connection refused
java.lang.NullPointerException: Cannot invoke "org.keycloak.common.util.KeycloakUriBuilder.clone()" because the return value of "org.keycloak.adapters.KeycloakDeployment.getAuthUrl()" is null

我知道肯定是某个配置环节出了问题,但折腾了好久还是没找到原因,有没有熟悉Docker和Keycloak的大佬能给点思路?

备注:内容来源于stack exchange,提问作者user3458271

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 11:18:00