本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
keycloak-config-cli是一个Keycloak实用工具,用于基于JSON/YAML文件确保领域的期望配置状态。JSON/YAML文件格式基于导出的领域格式,可像管理代码一样在Git中存储和处理配置文件,无需重启Keycloak即可应用配置。
配置文件基于Keycloak导出文件格式,可用于重新导入设置。建议保持文件精简,移除所有UUID和Keycloak默认设置的内容。
moped.json是一个完整的示例配置文件,其他示例位于测试资源目录中。
keycloak-config-cli支持配置文件的变量替换功能,可通过import.var-substitution.enabled=true启用(默认禁用)。
Spring Boot公开的变量(通过配置树或外部配置)可通过$(property.name)访问。
此外,字符串替换支持多种前缀用于不同场景:
Base64解码器: $(base64Decoder:SGVsbG9Xb3JsZCE=) Base64编码器: $(base64Encoder:HelloWorld!) Java常量: $(const:java.awt.event.KeyEvent.VK_ESCAPE) 日期: $(date:yyyy-MM-dd) DNS: $(dns:address|apache.org) 环境变量: $(env:USERNAME) 文件内容: $(file:UTF-8:src/test/resources/document.properties) Java信息: $(java:version) 本地主机: $(localhost:canonical-name) 属性文件: $(properties:src/test/resources/document.properties::mykey) 资源包: $(resourceBundle:org.example.testResourceBundleLookup:mykey) 脚本: $(script:javascript:3 + 4) 系统属性: $(sys:user.dir) URL解码器: $(urlDecoder:Hello%20World%21) URL编码器: $(urlEncoder:Hello World!) URL内容(HTTP): $(url:UTF-8:[***] URL内容(HTTPS): $(url:UTF-8:[***] URL内容(文件): $(url:UTF-8:file:///$(sys:user.dir)/src/test/resources/document.properties) XML XPath: $(xml:src/test/resources/document.xml:/root/path/to/node)
用于替换Java系统属性或环境变量的值。如果import.var-substitution.enabled设为true,默认启用递归变量替换,如$(file:UTF-8:$(env:KEYCLOAK_PASSWORD_FILE))。
变量替换在JSON解析器执行前运行,支持JSON结构或复杂值。
有关更多信息和高级用法,请参见Apache Common StringSubstitutor文档。
注意:变量替换是keycloak-config-cli的一部分,在本地完成。这意味着环境变量需要在执行keycloak-config-cli的环境中可用。
如果设置了import.var-substitution.prefix=${和import.var-substitution.suffix=}(keycloak-config-cli 3.x中的默认值),则Keycloak内置变量(如${role_uma_authorization})需要使用$${role_uma_authorization}进行转义。
keycloak-config-cli支持JSON格式日志。要启用,请设置SPRING_PROFILES_ACTIVE=json-log。
| CLI选项 | 环境变量 | 描述 | 默认值 |
|---|---|---|---|
| --logging.level.root | LOGGING_LEVEL_ROOT | 定义根日志级别 | info |
| --logging.level.keycloak-config-cli | LOGGING_LEVEL_KEYCLOAKCONFIGCLI | keycloak-config-cli组件的日志级别 | 继承logging.level.root的值 |
| --logging.level.http | LOGGING_LEVEL_HTTP | keycloak-config-cli与Keycloak之间的HTTP请求日志级别 | 继承logging.level.root的值 |
| --logging.level.realm-config | LOGGING_LEVEL_REALMCONFIG | 如果设为trace,将记录包含敏感信息的领域配置 | 继承logging.level.root的值 |
参见:docs/FEATURES.md
从keycloak-config-cli 4.0开始,将支持Keycloak的最新4个版本(如可能)。存在一些例外情况:
Docker镜像可在DockerHub(docker.io/adorsys/keycloak-config-cli)和quay.io(quay.io/adorsys/keycloak-config-cli)获取。
| 标签 | 描述 |
|---|---|
latest | keycloak-config-cli的最新可用版本,基于最新支持的Keycloak版本构建 |
latest-x.y.z | keycloak-config-cli的最新可用版本,基于Keycloak版本x.y.z构建 |
edge | main分支的最新提交,基于最新支持的Keycloak版本构建 |
a.b.c | keycloak-config-cli版本a.b.c,基于最新支持的Keycloak版本构建 |
a.b.c-x.y.z | keycloak-config-cli版本a.b.c,基于Keycloak版本x.y.z构建 |
maven | 包含源代码,可在运行时编译keycloak-config-cli |
此外,maven标签包含源代码,可在运行时编译keycloak-config-cli。这有助于使用非官方支持的Keycloak版本运行keycloak-config-cli,例如:
docker run --rm -ti -v $PWD:/config/ -eKEYCLOAK_VERSION=23.0.1 -eMAVEN_CLI_OPTS="-B -ntp -q" adorsys/keycloak-config-cli:edge-build
对于Docker环境变量,需要将点替换为下划线。
docker run \ -e KEYCLOAK_URL="http://<your keycloak host>:8080/" \ -e KEYCLOAK_USER="<keycloak admin username>" \ -e KEYCLOAK_PASSWORD="<keycloak admin password>" \ -e KEYCLOAK_AVAILABILITYCHECK_ENABLED=true \ -e KEYCLOAK_AVAILABILITYCHECK_TIMEOUT=120s \ -e IMPORT_FILES_LOCATIONS='/config/*' \ -v <your config path>:/config \ adorsys/keycloak-config-cli:latest
您可以通过以下命令构建自己的Docker镜像:
docker build -t keycloak-config-cli .
| CLI选项 | 环境变量 | 描述 | 默认值 | 文档 |
|---|---|---|---|---|
| --keycloak.url | KEYCLOAK_URL | Keycloak URL,包括Web上下文。格式:scheme://hostname:port/web-context | - | |
| --keycloak.user | KEYCLOAK_USER | 登录用户名 | admin | |
| --keycloak.password | KEYCLOAK_PASSWORD | 登录用户密码 | - | |
| --keycloak.client-id | KEYCLOAK_CLIENTID | 登录客户端ID | admin-cli | |
| --keycloak.client-secret | KEYCLOAK_CLIENTSECRET | 登录客户端密钥 | - | |
| --keycloak.grant-type | KEYCLOAK_GRANTTYPE | 登录授权类型 | password | |
| --keycloak.login-realm | KEYCLOAK_LOGINREALM | 登录领域 | master | |
| --keycloak.ssl-verify | KEYCLOAK_SSLVERIFY | 验证到Keycloak的SSL连接 | true | |
| --keycloak.http-proxy | KEYCLOAK_HTTPPROXY | 通过HTTP代理连接到Keycloak。格式:scheme://hostname:port | - | |
| --keycloak.connect-timeout | KEYCLOAK_CONNECTTIMEOUT | 连接超时 | 10s | |
| --keycloak.read-timeout | KEYCLOAK_READTIMEOUT | 读取超时 | 10s | 配置为Java Duration |
| --keycloak.availability-check.enabled | KEYCLOAK_AVAILABILITYCHECK_ENABLED | 等待Keycloak可用 | false | |
| --keycloak.availability-check.timeout | KEYCLOAK_AVAILABILITYCHECK_TIMEOUT | Keycloak可用性检查的等待超时 | 120s |
| CLI选项 | 环境变量 | 描述 | 默认值 | 文档 |
|---|---|---|---|---|
| --import.validate | IMPORT_VALIDATE | 验证配置设置 | false | |
| --import.parallel | IMPORT_PARALLEL | 启用某些资源的并行导入 | false | |
| --import.files.locations | IMPORT_FILES_LOCATIONS | 配置文件位置(URL、文件路径或Ant风格模式) | - | IMPORT.md |
| --import.files.include-hidden-files | IMPORT_FILES_INCLUDE_HIDDEN_FILES | 包含标记为隐藏的文件 | false | |
| --import.files.excludes | IMPORT_FILES_EXCLUDES | 使用Ant风格模式排除文件 | - | |
| --import.cache.enabled | IMPORT_CACHE_ENABLED | 启用导入文件位置的缓存 | true | |
| --import.cache.key | IMPORT_CACHE_KEY | 导入配置的缓存键 | default | |
| --import.remote-state.enabled | IMPORT_REMOTESTATE_ENABLED | 启用远程状态管理。仅清除由keycloak-config-cli管理的资源 | true | MANAGED.md |
| --import.remote-state.encryption-key | IMPORT_REMOTESTATE_ENCRYPTIONKEY | 启用加密格式的远程状态。如果未设置,状态将以明文存储 | - | |
| --import.var-substitution.enabled | IMPORT_VARSUBSTITUTION_ENABLED | 启用配置文件的变量替换 | false | |
| --import.var-substitution.nested | IMPORT_VARSUBSTITUTION_NESTED | 展开变量中的变量 | true | |
| --import.var-substitution.undefined-is-error | IMPORT_VARSUBSTITUTION_UNDEFINEDISTERROR | 如果变量未定义,则引发异常 | true | |
| --import.var-substitution.prefix | IMPORT_VARSUBSTITUTION_PREFIX | 如果import.var-substitution.enabled设为true,配置变量前缀 | $( | |
| --import.var-substitution.suffix | IMPORT_VARSUBSTITUTION_SUFFIX | 如果import.var-substitution.enabled设为true,配置变量后缀 | ) | |
| --import.behaviors.sync-user-federation | IMPORT_BEHAVIORS_SYNC_USER_FEDERATION | 启用用户联合的同步 | false |
启动本地Keycloak(端口8080):
docker-compose down --remove-orphans && docker-compose up keycloak
然后执行以下命令:
java -jar ./target/keycloak-config-cli.jar \ --keycloak.url=http://localhost:8080 \ --keycloak.ssl-verify=true \ --keycloak.user=admin \ --keycloak.password=admin123 \ --import.files.locations=./contrib/example-config/moped.json
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429