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

Docker部署Keycloak 20.0.3连接PostgreSQL数据库报错求助

Keycloak 20.0.3 连接PostgreSQL持久化存储失败排查

操作步骤

用户执行的Docker配置命令:

1. docker network create keycloak-network
2. docker run --name postgresP -p 5432:5432 -d --net keycloak-network -e POSTGRES_PASSWORD=admin -e POSTGRES_USER=admin -e POSTGRES_DB=pdb -d postgres:latest
3. docker run -p 9090:9090 --name keycloakP --net keycloak-network -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin -e KC_DB=postgres -e KC_DB_URL=jdbc:postgresql://localhost:5432/pdb -e KC_DB_USERNAME=admin -e KC_DB_PASSWORD=admin quay.io/keycloak/keycloak:latest start-dev

错误日志

2023-02-10 11:08:36,986 DEBUG [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Adding elements io.quarkus.bootstrap.classloading.PathTreeClassPathElement[io.quarkus:quarkus-devservices-common / runtime=false resources=null] to QuarkusClassLoader Augmentation Class Loader: PROD

2023-02-10 11:08:36,987 DEBUG [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Adding elements io.quarkus.bootstrap.classloading.PathTreeClassPathElement[io.quarkiverse.vault:quarkus-vault-deployment / runtime=false resources=null] to QuarkusClassLoader Augmentation Class Loader: PROD

2023-02-10 11:08:36,987 DEBUG [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Adding elements io.quarkus.bootstrap.classloading.PathTreeClassPathElement[org.keycloak:keycloak-quarkus-server-deployment / runtime=false resources=null] to QuarkusClassLoader Augmentation Class Loader: PROD

2023-02-10 11:08:39,257 DEBUG [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Adding elements io.quarkus.bootstrap.classloading.PathTreeClassPathElement[/ runtime=true resources=null] to QuarkusClassLoader Deployment Class Loader: PROD

2023-02-10 11:08:39,290 DEBUG [io.quarkus.deployment.QuarkusAugmentor] (main) Beginning Quarkus augmentation

2023-02-10 11:08:40,193 TRACE [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Class quarkus.properties not found in parent first load from java.net.URLClassLoader@192c3f1e

2023-02-10 11:08:40,194 TRACE [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Class quarkus.properties not found in parent first load from java.net.URLClassLoader@192c3f1e

ERROR: Failed to run 'build' command.
ERROR: No value present

解决思路

1. 修正PostgreSQL容器启动命令的参数错误

原命令重复使用了-d参数,会导致Docker解析异常,容器可能未正常启动。修正后的命令:

docker run --name postgresP -p 5432:5432 --net keycloak-network -e POSTGRES_PASSWORD=admin -e POSTGRES_USER=admin -e POSTGRES_DB=pdb -d postgres:latest

2. 修正Keycloak的数据库连接地址

Docker容器内的localhost指向容器自身,而非宿主机。由于两个容器在同一自定义网络中,直接使用PostgreSQL容器名称postgresP作为地址,同时指定Keycloak版本为20.0.3避免版本兼容问题:

docker run -p 9090:9090 --name keycloakP --net keycloak-network -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin -e KC_DB=postgres -e KC_DB_URL=jdbc:postgresql://postgresP:5432/pdb -e KC_DB_USERNAME=admin -e KC_DB_PASSWORD=admin quay.io/keycloak/keycloak:20.0.3 start-dev

3. 验证容器状态与网络连通性

  • 检查PostgreSQL容器运行状态:docker ps | grep postgresP,未启动则重新启动
  • 在Keycloak容器内测试网络连通:docker exec -it keycloakP ping postgresP,确认地址可达
  • 手动验证数据库连接:用PostgreSQL客户端连接postgresP:5432,确认用户名、密码、数据库名正确

4. 核对Keycloak版本的环境变量

20.0.3版本的数据库相关参数需确保无拼写错误:

  • KC_DB=postgres:指定数据库类型
  • KC_DB_URL:JDBC连接地址
  • KC_DB_USERNAME:数据库用户名
  • KC_DB_PASSWORD:数据库密码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 08:56:09