docker 密钥罩导出仅接受H2数据-URL(数据源:URL格式错误;必须是jdbc:h2...但却是jdbc:mariadb:...)

bbmckpt7  于 2022-12-18  发布在  Docker
关注(0)|答案(1)|浏览(137)

密钥罩版本:20.0.1
Docker版本:20.10.12
Docker-合成版本:2.2.2
Github问题:https://github.com/keycloak/keycloak/issues/15898

问题是

我喜欢从MariaDB数据库导出Keycloak数据,但这是不可能的。
我使用的源代码是:https://www.keycloak.org/server/importExport
导出命令export仅接受H2数据库-URL,即使我已使用适当的数据库供应商创建了构建版本。我已在执行导出之前创建了新构建版本:build --db=mariadb
如果我尝试从MariaDB数据库导出Keycloak-data,则显示错误。
错误为:
Datasource '<default>': URL format error; must be "jdbc:h2:{ {.|mem:}[name] | [file:]fileName | {tcp|ssl}:[//]server[:port][,server2[:port]]/name }[;key=value...]" but is "jdbc:mariadb://db.my-domain.de:3306/keycloak"

预期行为

预期行为是export命令接受MariaDB数据库URL,如jdbc:mariadb:...

实际行为

实际的行为是,export命令只接受类似jdbc:h2:...的H2数据库URL,即使我之前执行过build --db=mariadb
此外,show-config命令显示kc.db = mariadb (KcEnvVarConfigSource)不是。

如何重现

version: '3.9'

services:
  keycloak-export:
      container_name: keycloak-export
      image: quay.io/keycloak/keycloak:latest
      environment:
        KC_HOSTNAME: login.my-domain.com
        KC_HOSTNAME_STRICT_HTTPS: true 
        KC_HTTP_ENABLED: false
        KC_PROXY: edge
        KC_DB: mariadb
        KC_DB_URL_HOST: db.my-domain.com
        KC_DB_URL_DATABASE: keycloak
        KC_DB_URL_PORT: 3306
        KC_DB_USERNAME: ***
        KC_DB_PASSWORD: ***
        KC_HTTPS_KEY_STORE_FILE: /keystore.p12
        KC_HTTPS_KEY_STORE_PASSWORD: ***
      command:
        - export --dir /export_data
      volumes:
        - ./keystore.p12:/keystore.p12
        - ./export_data:/export_data
      restart: "no"

附加信息

在生产模式下,Keycloak服务器基于此Docker合成文件连接到MariaDB数据库服务器:

version: '3.9'

services:
  keycloak:
      container_name: keycloak
      image: quay.io/keycloak/keycloak:latest
      environment:
        KC_HOSTNAME: login.my-domain.de
        KC_HOSTNAME_STRICT_HTTPS: true 
        KC_HTTP_ENABLED: false
        KC_PROXY: edge
        KC_DB: mariadb
        KC_DB_URL_HOST: db.my-domain.de
        KC_DB_URL_DATABASE: keycloak
        KC_DB_URL_PORT: 3306
        KC_DB_USERNAME: ***
        KC_DB_PASSWORD: ***
        KC_HTTPS_KEY_STORE_FILE: /keystore.p12
        KC_HTTPS_KEY_STORE_PASSWORD: ***
        KEYCLOAK_ADMIN: ***
        KEYCLOAK_ADMIN_PASSWORD: ***
        KC_TRANSACTION_XA_ENABLED: true
        KC_HEALTH_ENABLED: true
        KC_METRICS_ENABLED: true
      command:
        - start
      ports:
        - 8080:8080
      volumes:
        - ./keystore.p12:/keystore.p12
      restart: always
e4yzc0pl

e4yzc0pl1#

你必须先建立配置然后再导出。所以你应该添加“build”命令。

version: '3.9'

services:
  keycloak-export:
      container_name: keycloak-export
      image: quay.io/keycloak/keycloak:latest
      environment:
        KC_HOSTNAME: login.my-domain.com
        KC_HOSTNAME_STRICT_HTTPS: true 
        KC_HTTP_ENABLED: false
        KC_PROXY: edge
        KC_DB: mariadb
        KC_DB_URL_HOST: db.my-domain.com
        KC_DB_URL_DATABASE: keycloak
        KC_DB_URL_PORT: 3306
        KC_DB_USERNAME: ***
        KC_DB_PASSWORD: ***
        KC_HTTPS_KEY_STORE_FILE: /keystore.p12
        KC_HTTPS_KEY_STORE_PASSWORD: ***
      command:
        - build && export --dir /export_data
      volumes:
        - ./keystore.p12:/keystore.p12
        - ./export_data:/export_data
      restart: "no"

相关问题