需要在Azure Postgres SQL上运行Keycloak Docker镜像。

3
我需要运行位于此处的keycloak docker镜像(https://hub.docker.com/r/jboss/keycloak),并将其与Azure PostgreSQL一起使用。
默认情况下,当我使用此命令docker run -p 8080:8080 jboss/keycloak运行时,它会默认使用数据库。
-- 它已经成功运行了!!
现在,根据文档中提到的方法,我正在尝试通过以下命令传递Azure数据库凭据来运行它:
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

但它没有起作用。
在日志中显示“连接被拒绝”。

你是否在Azure Postgres连接安全防火墙中添加了客户端IP地址? - Christian Vorhemus
2个回答

2
对于keycloak 12.0.1版本,如果数据库使用的是TLSv1.2以下的协议,仍然会出现此问题。我认为问题出在RedHat UBI 8镜像不接受低于TLSv1.2的协议。

Keycloak 7.0.1 and MySQL (RDS) SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate) for review所述。

我也遇到了同样的问题,后来发现我缺少两个环境变量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

-1

尝试使用以下方式传递数据库凭据:

docker run \
 -e DB_VENDOR=POSTGRES\
 -e DB_ADDR=postgres \
 -e DB_DATABASE: keycloak \
 -e DB_USER=keycloak \
 -e DB_PASSWORD=password \
 -e KEYCLOAK_USER=admin \
 -e KEYCLOAK_PASSWORD=admin \
 -p 8080:8080 \
 jboss/keycloak

如果仍然无法正常工作,最好使用docker-compose文件


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接