本地使用Bitnami镜像启动Keycloak实例失败求助
解决Bitnami Keycloak容器启动时无法解析postgresql主机的问题
问题原因
Bitnami的Keycloak镜像默认依赖PostgreSQL数据库,且默认配置里数据库主机名为postgresql。你单独启动Keycloak容器时,既没有在同一Docker网络中启动对应的PostgreSQL服务,也没指定自定义数据库连接参数,导致容器无法找到这个主机。
解决方案
方案1:用Docker Compose同时启动Keycloak和PostgreSQL(推荐)
创建docker-compose.yml文件,内容如下:
version: '3' services: postgresql: image: bitnami/postgresql:15 environment: - POSTGRESQL_USERNAME=bn_keycloak - POSTGRESQL_PASSWORD=bitnami - POSTGRESQL_DATABASE=bitnami_keycloak volumes: - postgresql_data:/bitnami/postgresql keycloak: image: bitnami/keycloak:20.0.5-debian-11-r1 environment: - KEYCLOAK_DATABASE_HOST=postgresql - KEYCLOAK_DATABASE_USER=bn_keycloak - KEYCLOAK_DATABASE_PASSWORD=bitnami - KEYCLOAK_DATABASE_NAME=bitnami_keycloak - KEYCLOAK_ADMIN_USER=admin - KEYCLOAK_ADMIN_PASSWORD=admin ports: - '8080:8080' depends_on: - postgresql volumes: postgresql_data: driver: local
执行启动命令:
docker-compose up -d
这种方式会自动创建同一网络下的PostgreSQL服务,Keycloak能直接解析到postgresql主机。
方案2:指定自定义数据库参数单独启动Keycloak
如果你已有可用的PostgreSQL(本地或远程均可),启动容器时添加数据库相关环境变量:
docker run --name keycloak-local \ -e KEYCLOAK_DATABASE_HOST=你的数据库IP或主机名 \ -e KEYCLOAK_DATABASE_PORT=5432 \ -e KEYCLOAK_DATABASE_USER=你的数据库用户名 \ -e KEYCLOAK_DATABASE_PASSWORD=你的数据库密码 \ -e KEYCLOAK_DATABASE_NAME=你的数据库名 \ -e KEYCLOAK_ADMIN_USER=admin \ -e KEYCLOAK_ADMIN_PASSWORD=admin \ -p 8080:8080 \ bitnami/keycloak:20.0.5-debian-11-r1
替换命令中你的数据库IP或主机名等参数为实际值即可。
内容的提问来源于stack exchange,提问作者Kaushik Bhave
相关产品推荐
相关产品推荐

