KeyCloak Docker撰写:禁用表的覆盖

时间:2020-07-07 05:29:08

标签: jhipster keycloak

我正在尝试使用docker compose设置Keycloak:

version: '2'
services:
  keycloak:
    image: jboss/keycloak:9.0.0
    command:
      [
        '-b',
        '0.0.0.0',
        '-Dkeycloak.migration.action=import',
        '-Dkeycloak.migration.provider=dir',
        '-Dkeycloak.migration.dir=/opt/jboss/keycloak/realm-config',
        '-Dkeycloak.migration.strategy=IGNORE_EXISTING',
        '-Djboss.socket.binding.port-offset=1000',
        '-Djboss.as.management.blocking.timeout=1000',
        '-Dkeycloak.profile.feature.upload_scripts=enabled'
      ]
    volumes:
      - ./realm-config:/opt/jboss/keycloak/realm-config
    environment:
      - KEYCLOAK_USER=admin
      - KEYCLOAK_PASSWORD=admin
      - DB_VENDOR=MYSQL
      - DB_ADDR=testmysqldb.mysql.database.azure.com
      - DB_USER=testuser
      - DB_PASSWORD=testpassword
      - DB_DATABASE=keycloak
    ports:
      - 9080:9080
      - 9443:9443
      - 10990:10990

设置所有表花费很长时间,但最终创建了表。但是,一段时间后,我的jboss启动超时。当我尝试重新启动容器时,出现以下错误:

错误[org.keycloak.connections.jpa.updater.liquibase.conn.DefaultLiquibaseConnectionProvider](ServerService线程池-68)更改集META-INF / jpa-changelog-authz-4.0.0.CR1.xml :: authz-4.0.0.CR1 :: psilva@redhat.com失败。错误:表'resource_server_perm_ticket'已经存在 [失败的SQL:创建表keycloak_new.RESOURCE_SERVER_PERM_TICKET(ID VARCHAR(36)不为空,所有者VARCHAR(36)不为空,REQUESTER VARCHAR(36)不为空,CREATED_TIMESTAMP BIGINT非空,GRANTED_TIMESTAMP BIGINT空,RESOURCE_ID VARCHAR(36)非空,SCOPE_ID VARCHAR(36)空,RESOURCE_SERVER_ID VARCHAR(36)非空)] 15:08:40,541致命[org.keycloak.services](ServerService线程池-68)java.lang.RuntimeException:无法更新数据库

我无法找到有关如何解决此错误的任何解决方案。基本上,一旦表存在,我希望密钥库不要尝试覆盖它们。我确定我在这里缺少配置。有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

最后,我通过在独立模式下运行keycloak解决了它。它创建了数据库结构,没有任何超时问题。 创建数据库后,我以docker模式启动keycloak并连接到外部数据库。它开始没有任何问题。