我需要使用 azure postgresql 运行此处提供的 keycloak docker 镜像 ( https://hub.docker.com/r/jboss/keycloak )。
默认情况下,当我使用此命令运行时 docker run -p 8080:8080 jboss/keycloak
默认情况下需要 db 。
--成功了!!
现在,我尝试根据提到的文档使用 azure postgressql 运行它,我尝试在命令中传递这样的 azure db 凭据,如下所示:
docker run \
-e DB_VENDOR=postgres \
-e DB_ADDR=<AZUREDATASOURCE> \
-e DB_USER=<DBUSER> \
-e DB_PASSWORD=<DBPASS> \
-e KEYCLOAK_USER=admin \
-e KEYCLOAK_PASSWORD=admin \
-p 8080:8080 \
jboss/keycloak
但是它不起作用。
日志中显示连接被拒绝
。
最佳答案
For keycloak 12.0.1 you still experience this problem when the database uses anything weaker than TLSv1.2. I think the problem occurs, because the RedHat UBI 8 image does not accept anything less than TLSv1.2.
我遇到了同样的问题,然后我意识到我缺少两个环境变量 JDBC_PARAMS: "enabledTLSProtocols=TLSv1.2"
和DB_DATABASE: <your_database_name>
还要确保在数据库端启用了 TLS 并将其设置为版本 1.2。
这就是使用所有参数时 docker 运行的样子:
docker run \
-e DB_VENDOR=postgres \
-e DB_ADDR=xxxxxxxxxx.postgres.database.azure.com \
-e DB_USER=xxxxxxxxx@databaseservername \
-e DB_PASSWORD=<DBPASS> \
-e DB_PORT=5432 \
-e JDBC_PARAMS="enabledTLSProtocols=TLSv1.2" \
-e KEYCLOAK_USER=admin \
-e KEYCLOAK_PASSWORD=admin \
-p 8080:8080 \
jboss/keycloak
如果这不起作用,请确保可以使用任何工具(例如 pgAdmin)访问您的数据库实例。如果没有,请检查您的数据库服务器安全设置,并确保防火墙设置允许您的 IP 地址,以便您的容器可以访问数据库。
这是一个有效的 docker-compose 文件示例:
version: '3'
services:
keycloak:
image: jboss/keycloak
environment:
DB_VENDOR: POSTGRES
DB_ADDR: xxxxxxxx.postgres.database.azure.com
DB_DATABASE: postgres
DB_USER: xxxxxx@xxxxxxxx
DB_SCHEMA: public
DB_PORT: 5432
DB_PASSWORD: xxxxxxxxxxxx
KEYCLOAK_USER: user
KEYCLOAK_PASSWORD: password
JDBC_PARAMS: "enabledTLSProtocols=TLSv1.2"
PROXY_ADDRESS_FORWARDING: "true"
ports:
- 8080:8080
关于postgresql - 需要使用 azure postgresql 运行 Keycloak Docker Image,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57395177/