
dcm4che/keycloakdcm4che/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

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务