Keycloak 17.0.0 docker 镜像找不到适合 postgres 的驱动程序

WSK*_*WSK 10 docker keycloak

我正在运行 docker 桌面(Windows)并按照此处的说明为 keycloak 17.0.0 构建 docker 映像。构建成功完成,但是当我在桌面上运行此映像时出现错误

错误 [org.key.qua.run.cli.ExecutionExceptionHandler](主要)错误:无法获取 JDBC 连接

错误 [org.key.qua.run.cli.ExecutionExceptionHandler](主要)错误:找不到适用于 jdbc 的驱动程序:postgresql://postgres/keycloak

postgres 已经在默认端口 5432 上以名称“postgres”在 docker 桌面中运行,并创建了 keyclock 数据库。

这是我的 Dockerfile:

FROM quay.io/keycloak/keycloak-x:latest as builder

ENV KC_METRICS_ENABLED=true
ENV KC_FEATURES=token-exchange
ENV KC_DB=postgres
RUN /opt/keycloak/bin/kc.sh build

FROM quay.io/keycloak/keycloak-x:latest
COPY --from=builder /opt/keycloak/lib/quarkus/ /opt/keycloak/lib/quarkus/
WORKDIR /opt/keycloak

RUN keytool -genkeypair -storepass password -storetype PKCS12 -keyalg RSA -keysize 2048 -dname "CN=server" -alias server -ext "SAN:c=DNS:localhost,IP:127.0.0.1" -keystore conf/server.keystore

ENV KEYCLOAK_ADMIN=admin
ENV KEYCLOAK_ADMIN_PASSWORD=admin

ENV KC_DB_URL='jdbc:postgresql://postgres/keycloak'
ENV KC_DB_USERNAME=postgres
ENV KC_DB_PASSWORD=postgres

ENV KC_HOSTNAME=localhost:8443
ENTRYPOINT ["/opt/keycloak/bin/kc.sh", "start"]
Run Code Online (Sandbox Code Playgroud)

我对文档的理解是,设置“KC_DB=postgres”后,构建应该包含似乎丢失的 postgres 驱动程序。

有人可以告诉我这里出了什么问题吗?谢谢。

Jan*_*raj 4

我猜KC_DB是一个运行时配置。请参阅构建帮助:

# ./kc.sh build -h
...
  Change database settings:

      $ kc.sh build --db=postgres [--db-url][--db-username][--db-password]
...
Run Code Online (Sandbox Code Playgroud)

所以它应该是构建参数--db=postgres

顺便说一句:我会使用quay.io/keycloak/keycloak:17.0.0图像(17.0.0 是第一个基于 Quarkus 的稳定 Keycloak 版本)。