
如果你使用 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-clustered 是基于 quay.io/keycloak/keycloak 官方 Docker 镜像的扩展版本,通过添加 JDBC_PING 集群发现协议,简化了 Keycloak 集群的部署和配置。该镜像旨在帮助用户快速构建支持分布式会话共享和高可用性的 Keycloak 集群环境,适用于开发测试和生产部署场景。
| 标签版本 | Dockerfile 链接 |
|---|---|
26.0.8, latest | https://github.com/ivangfr/keycloak-clustered/blob/master/26.0.8/Dockerfile |
26.0.7 | https://github.com/ivangfr/keycloak-clustered/blob/master/26.0.7/Dockerfile |
26.0.6 | https://github.com/ivangfr/keycloak-clustered/blob/master/26.0.6/Dockerfile |
26.0.5 | https://github.com/ivangfr/keycloak-clustered/blob/master/26.0.5/Dockerfile |
26.0.4 | https://github.com/ivangfr/keycloak-clustered/blob/master/26.0.4/Dockerfile |
26.0.2 | https://github.com/ivangfr/keycloak-clustered/blob/master/26.0.2/Dockerfile |
26.0.1 | https://github.com/ivangfr/keycloak-clustered/blob/master/26.0.1/Dockerfile |
26.0.0 | https://github.com/ivangfr/keycloak-clustered/blob/master/26.0.0/Dockerfile |
25.0.6 | https://github.com/ivangfr/keycloak-clustered/blob/master/25.0.6/Dockerfile |
25.0.5 | https://github.com/ivangfr/keycloak-clustered/blob/master/25.0.5/Dockerfile |
25.0.4 | https://github.com/ivangfr/keycloak-clustered/blob/master/25.0.4/Dockerfile |
25.0.2 | https://github.com/ivangfr/keycloak-clustered/blob/master/25.0.2/Dockerfile |
25.0.1 | https://github.com/ivangfr/keycloak-clustered/blob/master/25.0.1/Dockerfile |
25.0.0 | https://github.com/ivangfr/keycloak-clustered/blob/master/25.0.0/Dockerfile |
该镜像继承 Keycloak 官方镜像的所有环境变量,完整配置可参考 Keycloak 官方文档。常用基础变量包括:
| 环境变量 | 描述 | 默认值 |
|---|---|---|
KEYCLOAK_ADMIN | 管理员用户名 | - |
KEYCLOAK_ADMIN_PASSWORD | 管理员密码 | - |
KC_DB | 数据库类型(mysql/mariadb/postgres/mssql) | - |
KC_DB_URL_HOST | 数据库主机地址 | - |
KC_DB_URL_DATABASE | 数据库名称 | keycloak |
KC_DB_USERNAME | 数据库用户名 | - |
KC_DB_PASSWORD | 数据库密码 | - |
KC_LOG_LEVEL | 日志级别 | INFO |
| 环境变量 | 描述 | 示例值 |
|---|---|---|
JGROUPS_DISCOVERY_EXTERNAL_IP | 集群节点外部IP/主机名 | keycloak-clustered-1 |
进入对应版本目录,执行以下命令构建镜像:
bashdocker build -t ivanfranchin/keycloak-clustered:latest .
1. 创建 Docker 网络
bashdocker network create keycloak-net
2. 启动 MySQL 容器
bashdocker run --rm --name mysql -p 3306:3306 \ -e MYSQL_DATABASE=keycloak \ -e MYSQL_USER=keycloak \ -e MYSQL_PASSWORD=password \ -e MYSQL_ROOT_PASSWORD=root_password \ --network keycloak-net \ mysql:9.1.0
3. 启动 Keycloak 节点 1
bashdocker run --rm --name keycloak-clustered-1 -p 8080:8080 \ -e KEYCLOAK_ADMIN=admin \ -e KEYCLOAK_ADMIN_PASSWORD=admin \ -e KC_DB=mysql \ -e KC_DB_URL_HOST=mysql \ -e KC_DB_URL_DATABASE=keycloak \ -e KC_DB_USERNAME=keycloak \ -e KC_DB_PASSWORD=password \ -e KC_LOG_LEVEL=INFO,org.infinispan:DEBUG,org.jgroups:DEBUG \ -e JGROUPS_DISCOVERY_EXTERNAL_IP=keycloak-clustered-1 \ --network keycloak-net \ ivanfranchin/keycloak-clustered:latest start-dev
4. 启动 Keycloak 节点 2
bashdocker run --rm --name keycloak-clustered-2 -p 8081:8080 \ -e KEYCLOAK_ADMIN=admin \ -e KEYCLOAK_ADMIN_PASSWORD=admin \ -e KC_DB=mysql \ -e KC_DB_URL_HOST=mysql \ -e KC_DB_URL_DATABASE=keycloak \ -e KC_DB_USERNAME=keycloak \ -e KC_DB_PASSWORD=password \ -e KC_LOG_LEVEL=INFO,org.infinispan:DEBUG,org.jgroups:DEBUG \ -e JGROUPS_DISCOVERY_EXTERNAL_IP=keycloak-clustered-2 \ --network keycloak-net \ ivanfranchin/keycloak-clustered:latest start-dev
1. 创建 Docker 网络
bashdocker network create keycloak-net
2. 启动 MariaDB 容器
bashdocker run --rm --name mariadb -p 3306:3306 \ -e MARIADB_DATABASE=keycloak \ -e MARIADB_USER=keycloak \ -e MARIADB_PASSWORD=password \ -e MARIADB_ROOT_PASSWORD=root_password \ --network keycloak-net \ mariadb:10.11.10
3. 启动 Keycloak 节点 1
bashdocker run --rm --name keycloak-clustered-1 -p 8080:8080 \ -e KEYCLOAK_ADMIN=admin \ -e KEYCLOAK_ADMIN_PASSWORD=admin \ -e KC_DB=mariadb \ -e KC_DB_URL_HOST=mariadb \ -e KC_DB_URL_DATABASE=keycloak \ -e KC_DB_USERNAME=keycloak \ -e KC_DB_PASSWORD=password \ -e KC_LOG_LEVEL=INFO,org.infinispan:DEBUG,org.jgroups:DEBUG \ -e JGROUPS_DISCOVERY_EXTERNAL_IP=keycloak-clustered-1 \ --network keycloak-net \ ivanfranchin/keycloak-clustered:latest start-dev
4. 启动 Keycloak 节点 2
bashdocker run --rm --name keycloak-clustered-2 -p 8081:8080 \ -e KEYCLOAK_ADMIN=admin \ -e KEYCLOAK_ADMIN_PASSWORD=admin \ -e KC_DB=mariadb \ -e KC_DB_URL_HOST=mariadb \ -e KC_DB_URL_DATABASE=keycloak \ -e KC_DB_USERNAME=keycloak \ -e KC_DB_PASSWORD=password \ -e KC_LOG_LEVEL=INFO,org.infinispan:DEBUG,org.jgroups:DEBUG \ -e JGROUPS_DISCOVERY_EXTERNAL_IP=keycloak-clustered-2 \ --network keycloak-net \ ivanfranchin/keycloak-clustered:latest start-dev
1. 创建 Docker 网络
bashdocker network create keycloak-net
2. 启动 PostgreSQL 容器
bashdocker run --rm --name postgres -p 5432:5432 \ -e POSTGRES_DB=keycloak \ -e POSTGRES_USER=keycloak \ -e POSTGRES_PASSWORD=password \ --network keycloak-net \ postgres:17.2
3. 启动 Keycloak 节点 1
bashdocker run --rm --name keycloak-clustered-1 -p 8080:8080 \ -e KEYCLOAK_ADMIN=admin \ -e KEYCLOAK_ADMIN_PASSWORD=admin \ -e KC_DB=postgres \ -e KC_DB_URL_HOST=postgres \ -e KC_DB_URL_DATABASE=keycloak \ -e KC_DB_SCHEMA=myschema \ -e KC_DB_USERNAME=keycloak \ -e KC_DB_PASSWORD=password \ -e KC_LOG_LEVEL=INFO,org.infinispan:DEBUG,org.jgroups:DEBUG \ -e JGROUPS_DISCOVERY_EXTERNAL_IP=keycloak-clustered-1 \ --network keycloak-net \ ivanfranchin/keycloak-clustered:latest start-dev
4. 启动 Keycloak 节点 2
bashdocker run --rm --name keycloak-clustered-2 -p 8081:8080 \ -e KEYCLOAK_ADMIN=admin \ -e KEYCLOAK_ADMIN_PASSWORD=admin \ -e KC_DB=postgres \ -e KC_DB_URL_HOST=postgres \ -e KC_DB_URL_DATABASE=keycloak \ -e KC_DB_SCHEMA=myschema \ -e KC_DB_USERNAME=keycloak \ -e KC_DB_PASSWORD=password \ -e KC_LOG_LEVEL=INFO,org.infinispan:DEBUG,org.jgroups:DEBUG \ -e JGROUPS_DISCOVERY_EXTERNAL_IP=keycloak-clustered-2 \ --network keycloak-net \ ivanfranchin/keycloak-clustered:latest start-dev
警告:当前该配置存在问题,暂不推荐使用。
http://localhost:8080 和 http://localhost:8081admin,密码:admin)admin 用户有 2 个会话以 MySQL 为例,进入数据库容器查看集群表:
bash# 进入 MySQL 终端 docker exec -it -e MYSQL_PWD=password mysql mysql -ukeycloak --database keycloak # 查看 JGROUPSPING 表(集群节点信息) mysql> SELECT * FROM JGROUPSPING;
Ctrl+CCtrl+\bashdocker network rm keycloak-net
Vagrantfile 配置数据库类型(可选)bashvagrant up
vagrant suspendvagrant upvagrant haltvagrant destroy -f自 Keycloak 26.1.0 版本起,集群发现默认传输栈已切换为 JDBC-PING,简化了集群配置并提升了云环境兼容性。有关集群部署的详细指南,可参考以下文章:
Ivan Franchin
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务