dcm4che/keycloak-quarkus 是基于 eclipse-temurin:17(Java 17)构建的 Keycloak 镜像,采用 Keycloak 的 Quarkus 发行版。Keycloak 是一款开源的身份和访问管理(IAM)解决方案,提供集中式身份验证、授权、用户管理和单点登录(SSO)功能,适用于现代应用和服务的安全访问控制。
Keycloak 支持通过环境变量配置核心参数,常用变量如下表:
| 变量名 | 描述 | 默认值 | 示例值 |
|---|---|---|---|
| KEYCLOAK_ADMIN | 初始管理员用户名 | - | admin |
| KEYCLOAK_ADMIN_PASSWORD | 初始管理员密码 | - | secure_password |
| KC_DB | 数据库类型(支持 h2、postgres、mysql、mssql、oracle) | h2 | postgres |
| KC_DB_URL | 数据库连接 URL | 取决于 KC_DB | jdbc:postgresql://postgres:5432/keycloak |
| KC_DB_USERNAME | 数据库用户名 | - | keycloak_user |
| KC_DB_PASSWORD | 数据库密码 | - | keycloak_db_password |
| KC_HOSTNAME | 外部访问的主机名(生产模式必填) | - | auth.example.com |
| KC_HTTP_ENABLED | 是否启用 HTTP(生产环境建议禁用,仅用 HTTPS) | true | false |
| KC_HTTPS_PORT | HTTPS 端口 | 8443 | 443 |
| KC_HTTPS_CERTIFICATE_FILE | SSL 证书文件路径(容器内路径) | - | /etc/keycloak/certs/tls.crt |
| KC_HTTPS_CERTIFICATE_KEY_FILE | SSL 私钥文件路径(容器内路径) | - | /etc/keycloak/certs/tls.key |
| KC_LOG_LEVEL | 日志级别(ALL、DEBUG、INFO、WARN、ERROR、OFF) | INFO | DEBUG |
注:完整环境变量列表可通过
docker run --rm dcm4che/keycloak-quarkus:latest start --help查看。
开发模式使用内置 H2 内存数据库(数据非持久化),自动创建管理员账户,适合快速测试:
bashdocker run -it --rm \ -p 8080:8080 \ -e KEYCLOAK_ADMIN=admin \ -e KEYCLOAK_ADMIN_PASSWORD=admin \ dcm4che/keycloak-quarkus:latest \ start-dev
访问 http://localhost:8080,使用 admin/admin 登录管理控制台。
生产环境需配置外部数据库(如 PostgreSQL)和持久化存储,示例如下:
bashdocker run -d \ --name keycloak \ -p 8443:8443 \ -e KEYCLOAK_ADMIN=admin \ -e KEYCLOAK_ADMIN_PASSWORD=secure_password \ -e KC_DB=postgres \ -e KC_DB_URL=jdbc:postgresql://postgres-host:5432/keycloak \ -e KC_DB_USERNAME=keycloak_user \ -e KC_DB_PASSWORD=keycloak_db_password \ -e KC_HOSTNAME=auth.example.com \ -e KC_HTTPS_CERTIFICATE_FILE=/etc/keycloak/certs/tls.crt \ -e KC_HTTPS_CERTIFICATE_KEY_FILE=/etc/keycloak/certs/tls.key \ -v /path/to/certs:/etc/keycloak/certs \ dcm4che/keycloak-quarkus:latest \ start --optimized
以下为 Keycloak + PostgreSQL 的 Docker Compose 配置(docker-compose.yml):
yamlversion: '3.8' services: postgres: image: postgres:15 container_name: keycloak-db environment: POSTGRES_DB: keycloak POSTGRES_USER: keycloak_user POSTGRES_PASSWORD: keycloak_db_password volumes: - postgres-data:/var/lib/postgresql/data restart: unless-stopped keycloak: image: dcm4che/keycloak-quarkus:latest container_name: keycloak depends_on: - postgres ports: - "8443:8443" environment: KEYCLOAK_ADMIN: admin KEYCLOAK_ADMIN_PASSWORD: secure_password KC_DB: postgres KC_DB_URL: jdbc:postgresql://postgres:5432/keycloak KC_DB_USERNAME: keycloak_user KC_DB_PASSWORD: keycloak_db_password KC_HOSTNAME: auth.example.com KC_HTTPS_CERTIFICATE_FILE: /etc/keycloak/certs/tls.crt KC_HTTPS_CERTIFICATE_KEY_FILE: /etc/keycloak/certs/tls.key volumes: - ./certs:/etc/keycloak/certs # 挂载 SSL 证书 restart: unless-stopped volumes: postgres-data:
启动服务:
bashdocker-compose up -d
Keycloak 数据(用户、领域、客户端等)需通过外部数据库持久化,默认 H2 数据库仅用于开发。支持的数据库及配置示例:
KC_DB=postgres,KC_DB_URL=jdbc:postgresql://host:5432/dbname。KC_DB=mysql,KC_DB_URL=jdbc:mysql://host:3306/dbname?useSSL=false。KC_DB=mssql,KC_DB_URL=jdbc:sqlserver://host:1433;databaseName=dbname。通过挂载卷将自定义主题目录挂载到容器内的 /opt/keycloak/themes:
bashdocker run -d \ ... \ -v /path/to/custom-themes:/opt/keycloak/themes \ dcm4che/keycloak-quarkus:latest \ start --optimized
将自定义提供商 JAR 文件挂载到 /opt/keycloak/providers:
bashdocker run -d \ ... \ -v /path/to/providers:/opt/keycloak/providers \ dcm4che/keycloak-quarkus:latest \ start --optimized
挂载自定义 keycloak.conf 配置文件(覆盖默认配置):
bashdocker run -d \ ... \ -v /path/to/keycloak.conf:/opt/keycloak/conf/keycloak.conf \ dcm4che/keycloak-quarkus:latest \ start --optimized
如需预配置主题、提供商或配置,可基于此镜像构建自定义镜像:
dockerfileFROM dcm4che/keycloak-quarkus:latest # 添加自定义主题 COPY ./custom-themes /opt/keycloak/themes/ # 添加提供商 JAR COPY ./providers/*.jar /opt/keycloak/providers/ # 添加自定义配置 COPY ./keycloak.conf /opt/keycloak/conf/ # 构建时执行配置(如安装提供商) RUN /opt/keycloak/bin/kc.sh build
bash# 构建镜像 docker build -t my-custom-keycloak . # 运行自定义镜像 docker run -d \ -p 8443:8443 \ -e KEYCLOAK_ADMIN=admin \ -e KEYCLOAK_ADMIN_PASSWORD=secure_password \ my-custom-keycloak \ start --optimized
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 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 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速