如何移除PostgreSQL JDBC依赖并正常构建Keycloak 22.0.2?
解决Keycloak 22.0.2移除PostgreSQL驱动避免CVE-2024-1597漏洞的问题
问题分析
你删除的PostgreSQL驱动Jar包版本(42.6.0)与实际环境中的版本(42.7.10)不匹配,导致路径不存在报错;同时直接删除Jar包可能触发Keycloak构建时的依赖检查,引发错误。
解决方案
方法一:通过Keycloak扩展命令移除PostgreSQL驱动(推荐)
Keycloak 22采用Quarkus架构,PostgreSQL驱动是官方扩展的一部分,使用扩展管理命令移除能避免构建依赖错误:
在Dockerfile中添加以下命令:
# 移除PostgreSQL扩展 RUN /opt/keycloak/bin/kc.sh extension remove org.keycloak:keycloak-postgres # 执行构建 RUN /opt/keycloak/bin/kc.sh build
该命令会自动清理对应的PostgreSQL驱动Jar包及相关配置,确保构建顺利完成。
方法二:手动删除正确版本的驱动Jar包
先确认驱动Jar的正确路径,再执行删除和构建:
- 先验证Jar包路径(可选,用于排查):
RUN ls -l /opt/keycloak/lib/lib/main/org.postgresql.*
- 删除正确版本的驱动Jar:
RUN rm -f /opt/keycloak/lib/lib/main/org.postgresql.postgresql-42.7.10.jar # 执行构建 RUN /opt/keycloak/bin/kc.sh build
如果构建仍报错,说明Keycloak构建配置中仍依赖该驱动,此时建议使用方法一处理。
补充说明
- 确保你的Keycloak配置使用的是其他数据库(如H2、MySQL等),避免因移除PostgreSQL驱动导致运行时错误。
- 若使用默认的H2数据库,构建时可显式指定数据库类型,进一步避免驱动依赖问题:
RUN /opt/keycloak/bin/kc.sh build --db=h2
内容的提问来源于stack exchange,提问作者Chris McNeal
相关产品推荐
相关产品推荐

