如何在使用Docker Image时为Keycloak设置PostgreSQL架构?

时间:2018-03-11 19:37:12

标签: postgresql docker keycloak

我正在尝试使用Docker Image for Keycloak,但我似乎无法为PostgreSQL中创建的表设置架构。

目前,所有表都以公共架构结束。有没有办法可以指示Keycloak在模式中创建表?

1 个答案:

答案 0 :(得分:0)

您应该能够为数据源指定POSTGRES_DATABASE env变量:

docker ... -e POSTGRES_DATABASE=<your_database_name> ...

默认情况下,它应该使用数据库名称'keycloak',所以你不会看到它很奇怪:

/subsystem=datasources/data-source=KeycloakDS: add(jndi-name=java:jboss/datasources/KeycloakDS,enabled=true,use-java-context=true,use-ccm=true, connection-url=jdbc:postgresql://${env.POSTGRES_ADDR:postgres}:${env.POSTGRES_PORT:5432}/${env.POSTGRES_DATABASE:keycloak}, driver-name=postgresql)

源代码: https://github.com/jboss-dockerfiles/keycloak/blob/cd866b905d026eb69dab5176b352064252d92aff/server/cli/databases/postgres/change-database.cli#L2

<强>更新

抱歉,我明白你的意思了。在这种情况下,我认为您必须在数据库中手动创建架构,然后更新standalone.xml以使用您的架构:

<spi name="connectionsJpa">
  <provider name="default" enabled="true">
    <properties>
      <property name="dataSource" value="java:jboss/datasources/KeycloakDS"/>
      <property name="initializeEmpty" value="true"/>
      <property name="migrationStrategy" value="update"/>
      <property name="migrationExport" value="${jboss.home.dir}/keycloak-database-update.sql"/>
      <property name="schema" value="your_schema"/>
    </properties>
  </provider>
</spi>

看起来他们是don't support automatic schema creation,因此您可能需要提交功能请求。