gpt4 book ai didi

java - 具有自定义用户联合docker部署的Keycloak

转载 作者:行者123 更新时间:2023-12-02 19:44:16 25 4
gpt4 key购买 nike

我正在尝试在Docker上使用自定义用户联合身份验证提供程序部署Keycloak。我想使用外部数据库作为用户身份验证的其他来源。我已经在主机上测试了配置(从.tar.gz提取的整个项目),并且可以正常工作-我可以在管理面板中从外部db搜索用户或登录到keycloak。
问题是,当我运行容器时,出现以下错误:

12:36:36,127 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "custom-user-storage-jpa.jar")]) - failure description: {
"WFLYCTL0412: Required services that are not installed:" => ["jboss.naming.context.java.jboss.datasources.ExternalPostgresDS"],
"WFLYCTL0180: Services with missing/unavailable dependencies" => [
"jboss.persistenceunit.\"custom-user-storage-jpa.jar#custom-user-storage-jpa\" is missing [jboss.naming.context.java.jboss.datasources.ExternalPostgresDS]",
"jboss.persistenceunit.\"custom-user-storage-jpa.jar#custom-user-storage-jpa\".__FIRST_PHASE__ is missing [jboss.naming.context.java.jboss.datasources.ExternalPostgresDS]"
]
所以我假设我的jar看不到standalone.xml中配置的数据源(名称为ExternalPostgresDS)
我的自定义用户存储提供程序中有persistanceance.xml,后来由maven clean install在jar中内置
    <?xml version="1.0" encoding="UTF-8" ?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="
http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="custom-user-storage-jpa">
<jta-data-source>java:jboss/datasources/ExternalPostgresDS</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="none" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL95Dialect" />
</properties>
</persistence-unit>
</persistence>
standalone.xml中还有一节定义了数据源和驱动程序
                <xa-datasource jndi-name="java:jboss/datasources/ExternalPostgresDS" pool-name="ExternalPostgresDS" enabled="true" use-java-context="true" statistics-enabled="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}">
<xa-datasource-property name="ServerName">
address...
</xa-datasource-property>
<xa-datasource-property name="PortNumber">
5432
</xa-datasource-property>
<xa-datasource-property name="DatabaseName">
dbname...
</xa-datasource-property>
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
<driver>postgresql</driver>
<security>
<user-name>username...</user-name>
<password>password...</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"/>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"/>
</validation>
</xa-datasource>
<drivers>
<driver name="postgresql" module="org.postgresql">
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
</driver>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
</drivers>
最后是一个Dockerfile,该文件应根据我的需要自定义官方keycloak镜像:
FROM jboss/keycloak:11.0.2

ENV DB_VENDOR postgres
ENV DB_ADDR addr..
ENV DB_DATABASE dbname...
ENV DB_USER user...
ENV DB_PASSWORD password...
ENV PROXY_ADDRESS_FORWARDING true
ENV KEYCLOAK_USER admin
ENV KEYCLOAK_PASSWORD password

COPY ./_resources/standalone.xml /opt/jboss/keycloak/standalone/configuration/standalone.xml
COPY ./_resources/custom-user-storage-jpa.jar /opt/jboss/keycloak/standalone/deployments/custom-user-storage-jpa.jar
COPY ./_resources/postgresql/main/module.xml /opt/jboss/keycloak/modules/system/layers/keycloak/org/postgresql/main/module.xml
COPY ./_resources/postgresql/main/postgresql-42.2.18.jar /opt/jboss/keycloak/modules/system/layers/keycloak/org/postgresql/main/postgresql-42.2.18.jar

ENV JAVA_OPTS -server -Xms2048m -Xmx6144m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m

EXPOSE 8080
当然,我检查了复制的文件是否正确以及它们在运行容器中的位置,启动后一切正常,但没有我的自定义用户存储部署。
我想念什么?

最佳答案

看来您的standalone.xml文件没有被读取,而jboss尝试使用默认配置。
这里提到将默认文件名更新为standalone-ha.xml https://lists.jboss.org/pipermail/keycloak-dev/2018-October/011304.html
将镜像构建命令更新为

COPY ./_resources/standalone.xml /opt/jboss/keycloak/standalone/configuration/standalone-ha.xml
应该有所帮助

关于java - 具有自定义用户联合docker部署的Keycloak,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64591872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com