我在启用自定义 Keycloak Docker 映像中的某些功能时遇到问题,特别是
scripts
、impersonation
和 passkeys
。尽管遵循了推荐的步骤,但这些功能在最终图像中不可用。我所做的:
KC_FEATURES=scripts,impersonation,passkeys
激活预览功能。我的 Dockerfile 的简化版本:
# Stage 1: Building Keycloak with features
FROM quay.io/keycloak/keycloak:${KEYCLOAK_VERSION} AS builder
ENV KC_FEATURES=scripts,impersonation,passkeys
RUN /opt/keycloak/bin/kc.sh build
# Stage 2: Final image
FROM quay.io/keycloak/keycloak:${KEYCLOAK_VERSION}
COPY --from=builder /opt/keycloak/providers/ /opt/keycloak/providers/
CMD ["/opt/keycloak/bin/kc.sh", "start", "--optimized", "--cache=ispn", "--verbose"]
问题:
/opt/keycloak/providers/
时,它只包含README.md。/opt/keycloak/bin/kc.sh show-config
时,显示功能已激活:kc.features = scripts,impersonation,passkeys (ENV)
Installed features: [agroal, cdi, hibernate-orm, jdbc-mysql, keycloak, logging-gelf, micrometer, narayana-jta, reactive-routes, resteasy-reactive, resteasy-reactive-jackson, smallrye-context-propagation, smallrye-health, vertx]
有人遇到过这个问题或者知道如何在最终图像中正确包含这些功能吗?
/opt/keycloak/providers/
是自定义提供程序(JAR 文件)的路径,/opt/keycloak/lib/quarkus/
路径是包含构建后内容的目录,因此
# Stage 1: Building Keycloak with features
FROM quay.io/keycloak/keycloak:${KEYCLOAK_VERSION} AS builder
# If you have custom providers
COPY /service-providers-jars /opt/keycloak/providers/
ENV KC_FEATURES=scripts,impersonation,passkeys
RUN /opt/keycloak/bin/kc.sh build
# Stage 2: Final image
FROM quay.io/keycloak/keycloak:${KEYCLOAK_VERSION}
# copy the whole /opt/keycloak/
COPY --from=builder /opt/keycloak/ /opt/keycloak/
CMD ["/opt/keycloak/bin/kc.sh", "start", "--optimized", "--cache=ispn", "--verbose"]
或者,如果您愿意,
COPY
行可以位于 for 中
COPY --from=builder /opt/keycloak/providers/ /opt/keycloak/providers/
COPY --from=builder /opt/keycloak/lib/quarkus/ /opt/keycloak/lib/quarkus/