tgbyte/keycloak本镜像基于Keycloak构建,专为PostgreSQL数据库环境优化,提供开源身份和访问管理(IAM)解决方案。Keycloak是一款功能全面的身份服务,支持单点登录(SSO)、用户认证、授权管理、OAuth 2.0/OpenID Connect等标准协议,本镜像预配置PostgreSQL支持,简化与PostgreSQL数据库的集成流程,适用于需要可靠身份管理且采用PostgreSQL作为后端数据库的场景。
通过docker run命令快速启动容器,需指定PostgreSQL连接信息及管理员账号:
bashdocker run -d \ --name keycloak-postgres \ -p 8080:8080 \ # HTTP端口(生产环境建议搭配HTTPS代理) -e DB_VENDOR=postgres \ # 强制使用PostgreSQL驱动 -e DB_ADDR=postgres-host \ # PostgreSQL服务器地址(如容器名或IP) -e DB_PORT=5432 \ # PostgreSQL端口(默认5432,可省略) -e DB_DATABASE=keycloak \ # Keycloak数据库名 -e DB_USER=keycloak_user \ # 数据库用户名 -e DB_PASSWORD=keycloak_pass \ # 数据库密码 -e KEYCLOAK_USER=admin \ # Keycloak管理员用户名 -e KEYCLOAK_PASSWORD=admin_pass \ # Keycloak管理员密码 keycloak-postgres:latest # 替换为实际镜像标签
启动后,访问http://<主机IP>:8080即可打开Keycloak管理控制台,使用KEYCLOAK_USER和KEYCLOAK_PASSWORD登录。
通过docker-compose同时部署Keycloak和PostgreSQL(适合测试或开发环境):
创建docker-compose.yml文件:
yamlversion: '3.8' services: postgres: image: postgres:14-alpine container_name: keycloak-db environment: POSTGRES_DB: keycloak POSTGRES_USER: keycloak_user POSTGRES_PASSWORD: keycloak_pass volumes: - postgres-data:/var/lib/postgresql/data # 持久化数据库数据 restart: unless-stopped keycloak: image: keycloak-postgres:latest container_name: keycloak-postgres depends_on: - postgres # 等待PostgreSQL启动后再启动 environment: DB_VENDOR: postgres DB_ADDR: postgres # 关联PostgreSQL容器名(内部DNS解析) DB_PORT: 5432 DB_DATABASE: keycloak DB_USER: keycloak_user DB_PASSWORD: keycloak_pass KEYCLOAK_USER: admin KEYCLOAK_PASSWORD: admin_pass ports: - "8080:8080" restart: unless-stopped volumes: postgres-data: # 定义数据卷,持久化PostgreSQL数据
执行部署命令:
bashdocker-compose up -d
| 环境变量 | 说明 | 默认值 | 必须配置 |
|---|---|---|---|
DB_VENDOR | 数据库类型,必须设为postgres以启用PostgreSQL支持 | - | 是 |
DB_ADDR | PostgreSQL服务器地址(主机名/IP/容器名) | - | 是 |
DB_PORT | PostgreSQL端口 | 5432 | 否 |
DB_DATABASE | Keycloak使用的数据库名 | keycloak | 否 |
DB_USER | 数据库登录用户名 | - | 是 |
DB_PASSWORD | 数据库登录密码 | - | 是 |
KEYCLOAK_USER | Keycloak管理员用户名 | - | 是 |
KEYCLOAK_PASSWORD | Keycloak管理员密码 | - | 是 |
PROXY_ADDRESS_FORWARDING | 启用代理转发(如部署在Nginx/Traefik后,需设为true) | false | 否 |
KEYCLOAK_HTTP_PORT | 容器内HTTP端口 | 8080 | 否 |
KEYCLOAK_HTTPS_PORT | 容器内HTTPS端口(需挂载证书,生产环境建议使用) | 8443 | 否 |
KEYCLOAK_HTTPS_PORT并挂载SSL证书(如Let's Encrypt),或使用反向代理(Nginx/Traefik)终止HTTPS。-v挂载Keycloak配置目录(如/opt/jboss/keycloak/standalone/data),避免容器重启后数据丢失。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务