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
相关产品推荐
相关产品推荐

