如何使用Docker Compose部署Keycloak 21.0.2并对接PostgreSQL
使用Docker Compose部署Keycloak 21.0.2并对接PostgreSQL
以下是适配Keycloak 21.0.2版本的完整Docker Compose配置,包含PostgreSQL数据库和Keycloak服务的联动设置:
version: '3.8' services: postgres: image: postgres:14-alpine environment: POSTGRES_USER: keycloak POSTGRES_PASSWORD: strong-keycloak-pass POSTGRES_DB: keycloak_core volumes: - postgres_keycloak_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U keycloak -d keycloak_core"] interval: 10s timeout: 5s retries: 5 keycloak: image: quay.io/keycloak/keycloak:21.0.2 environment: # 数据库连接配置 KC_DB: postgres KC_DB_URL_HOST: postgres KC_DB_URL_DATABASE: keycloak_core KC_DB_USERNAME: keycloak KC_DB_PASSWORD: strong-keycloak-pass # 管理员账号初始化 KEYCLOAK_ADMIN: admin KEYCLOAK_ADMIN_PASSWORD: strong-admin-pass # 基础服务配置 KC_HTTP_ENABLED: "true" KC_FEATURES: token-exchange,admin-fine-grained-authz command: start-dev ports: - "8080:8080" depends_on: postgres: condition: service_healthy volumes: postgres_keycloak_data:
配置细节说明
PostgreSQL服务:
- 选用
postgres:14-alpine轻量镜像,与Keycloak 21.0.2版本兼容性良好 - 通过环境变量初始化专属数据库用户、密码和库,避免与其他服务冲突
- 挂载本地卷持久化数据库数据,防止容器重启后数据丢失
- 配置健康检查,确保数据库完全就绪后再启动Keycloak,避免连接失败
- 选用
Keycloak服务:
- 使用指定的官方镜像
quay.io/keycloak/keycloak:21.0.2 - 通过
KC_DB系列环境变量简化数据库连接配置,无需手动拼接JDBC URL start-dev命令启用开发模式,自动创建数据库表结构,适合测试/开发场景;生产环境需替换为start命令- 配置
KC_FEATURES启用常用扩展功能,可根据需求增减
- 使用指定的官方镜像
启动操作步骤
- 将上述内容保存为
docker-compose.yml文件 - 执行启动命令:
docker-compose up -d - 等待服务启动完成后,访问
http://localhost:8080/admin,使用配置的admin/strong-admin-pass登录管理后台
生产环境适配建议
- 替换
start-dev为start命令,开发模式不具备生产级稳定性 - 强制配置HTTPS,添加以下环境变量(需提前准备SSL证书文件):
KC_HTTPS_ENABLED: "true" KC_HTTPS_CERT_FILE: /opt/keycloak/certs/server.crt KC_HTTPS_KEY_FILE: /opt/keycloak/certs/server.key - 替换所有示例弱密码为高强度随机密码
- 限制Keycloak 8080端口的外部访问范围,仅允许可信客户端接入
内容的提问来源于stack exchange,提问作者Ayushaps1
相关产品推荐
相关产品推荐

