You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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启用常用扩展功能,可根据需求增减

启动操作步骤

  1. 将上述内容保存为docker-compose.yml文件
  2. 执行启动命令:
    docker-compose up -d
    
  3. 等待服务启动完成后,访问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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 14:42:40