当前位置: 首页 > 知识库问答 >
问题:

KeyCloak Docker Compose:禁用覆盖表

云宏儒
2023-03-14

我正在尝试使用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启动的超时。当我尝试重新启动html" target="_blank">容器时,我得到以下错误:

错误[org.keycloak.connections.jpa.updater.Liquibase.connectionProvider](ServerService线程池--68)更改集META-INF/jpa-changelog-authz-4.0.0.cr1.xml::authz-4.0.0.cr1::psilva@redhat.com失败。错误:表“resource_server_perm_ticket”已存在[Failed sql:CREATE Table keycloak_new.resource_server_perm_ticket(ID VARCHAR(36)NOT NULL,OWNER VARCHAR(36)NOT NULL,REQUESTER VARCHAR(36)NOT NULL,CREATED_TIMESTAMP BIGINT NOT NULL,GRANTED_TIMESTAMP BIGINT NULL,RESOURCE_ID VARCHAR(36)NOT NULL,SCOPE_ID VARCHAR(36)NULL,SCOPE_ID VARCHAR(36)NULL,RESOURCE_SERVER_ID VARCHAR(36)NULL,RESOURCE_SERVER_ID VARCHAR(36)NULL,RESOURCE_SERVER_ID

我无法找到任何解决方案,如何解决这个错误。基本上,一旦表存在,我希望keycloak不要尝试覆盖它们。我肯定这里缺少配置。有人能帮帮我吗?

共有1个答案

籍英叡
2023-03-14

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

 类似资料:
  • 问题内容: 现在,我正在尝试用我的LESS代码在CSS3中执行此操作: 但是,LESS编译时将输出以下内容: 有没有办法告诉LESS不要以这种方式编译它并正常输出它? 问题答案: 使用[转义字符串(也称为转义值): 另外,如果您需要将Less Math与转义字符串混合使用: 编译为: 默认情况下,这作为“少”将值(转义的字符串和数学结果)连接在一起时起作用。

  • 我们可以禁用或覆盖身体解析器后,注入它作为中间件来表达应用程序? 在一个文件(不可编辑,由框架完成)应用程序中。使用(bodyParser.json());出口应用程序; 在另一个文件中,我正在导入应用程序,这里我想为其中一个路由禁用bodyParser。我有办法做到吗?

  • 我有一个maven项目,其中jmockit 1.18用于嘲笑,surefire用于运行测试套件,Jacoco用于测量代码覆盖率。 当我尝试将jmockit升级到1.45版时,它在初始化测试套件运行程序VM时出错。但是,当javaagent作为argline参数显式传递时,测试就会执行。 有人能告诉我是否有办法禁用jmockit检测或代理初始化吗?

  • 问题内容: 假设我在Java类中有一个方法,并且我不希望该类的任何子类能够覆盖该方法。我可以那样做吗? 问题答案: 您可以将方法声明为,如: 有关更多信息,请参见http://docs.oracle.com/javase/tutorial/java/IandI/final.html

  • 问题内容: 该Web服务基于SSL且具有自签名证书,该证书托管在远程系统中。我已经创建了一个访问该Web服务的客户端。这是通过以编程方式将证书添加到密钥存储区来完成的 。 现在,我听说,不必为添加自签名Web服务而将证书添加到密钥存储中。 相反,我们可以通过覆盖某些方法来禁用证书检查。 这是真的?这些方法有哪些? 请帮忙。 问题答案: 这应该足够了。在针对没有适当签名的证书的测试和登台服务器测试代

  • 我有一个具有以下属性的枚举: 此枚举有一个带有Jackson的@JsonValue注释的函数: 这将根据需要执行,将枚举值序列化为toString返回的值,这是枚举的名称。 我希望能够禁用@JsonValue注释,并且仅使用附加到此类的 Jackson 的默认 JSON 序列化行为:在某些情况下,必须获取表示整个枚举的对象而不仅仅是名称,)。 Jackson似乎没有内置这种能力(要么是这样,要么是