postgresql - 需要使用 azure postgresql 运行 Keycloak Docker Image

标签 postgresql azure docker keycloak

我需要使用 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.

如此处所述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

关于postgresql - 需要使用 azure postgresql 运行 Keycloak Docker Image,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57395177/

相关文章:

sql - 索引不会提高性能

azure - 如何将构建工件下载到本地文件夹

c# - 开发期间访问 Azure 存储时无法加载程序集 'Microsoft.Data.OData'

Docker swarm 不暴露端口

ruby-on-rails - 如何使用 Hstore 键在 ActiveRecord 查询上使用 group by 子句?

sql - 如何在数据库表列的标题中添加括号?

SOX 合规性的 Azure DevOps 权限层次结构

linux - 如何在Docker文件中包含Shell脚本套件

elasticsearch - Docker 从主机访问 elasticsearch 端点

c# - 从 EF for PostGresql 生成的查询中的非最佳计数