如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
keycloak-config-cli是一个Keycloak实用工具,用于基于JSON/YAML文件确保领域的期望配置状态。JSON/YAML文件格式基于导出的领域格式,可像管理代码一样在Git中存储和处理配置文件,无需重启Keycloak即可应用配置。
配置文件基于Keycloak导出文件格式,可用于重新导入设置。建议保持文件精简,移除所有UUID和Keycloak默认设置的内容。
https://github.com/adorsys/keycloak-config-cli/blob/main/contrib/example-config/moped.json%E6%98%AF%E4%B8%80%E4%B8%AA%E5%AE%8C%E6%95%B4%E7%9A%84%E7%A4%BA%E4%BE%8B%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%EF%BC%8C%E5%85%B6%E4%BB%96%E7%A4%BA%E4%BE%8B%E4%BD%8D%E4%BA%8Ehttps://github.com/adorsys/keycloak-config-cli/blob/main/src/test/resources/import-files%E7%9B%AE%E5%BD%95%E4%B8%AD%E3%80%82
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:http://www.apache.org) URL内容(HTTPS): $(url:UTF-8:https://www.apache.org) 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的值 |
参见:https://github.com/adorsys/keycloak-config-cli/blob/main/docs/FEATURES.md
从keycloak-config-cli 4.0开始,将支持Keycloak的最新4个版本(如可能)。存在一些例外情况:
Docker镜像可在https://hub.docker.com/r/adorsys/keycloak-config-cli%EF%BC%88docker.io/adorsys/keycloak-config-cli%EF%BC%89%E5%92%8Cquay.io%EF%BC%88quay.io/adorsys/keycloak-config-cli%EF%BC%89%E8%8E%B7%E5%8F%96%E3%80%82
| 标签 | 描述 |
|---|---|
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,例如:
bashdocker run --rm -ti -v $PWD:/config/ -eKEYCLOAK_VERSION=23.0.1 -eMAVEN_CLI_OPTS="-B -ntp -q" adorsys/keycloak-config-cli:edge-build
对于Docker环境变量,需要将点替换为下划线。
shelldocker 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镜像:
shelldocker 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风格模式) | - | https://github.com/adorsys/keycloak-config-cli/blob/main/docs/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 | https://github.com/adorsys/keycloak-config-cli/blob/main/docs/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):
shelldocker-compose down --remove-orphans && docker-compose up keycloak
然后执行以下命令:
shelljava -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
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务