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

Bitnami Keycloak(Quarkus)部署后PostgreSQL无表显示问题排查

问题:Bitnami Keycloak v20连接PostgreSQL后无表或数据库显示

我通过Docker Compose部署Bitnami的Keycloak v20.0.1(Quarkus)镜像,各项配置及运行均正常,但连接PostgreSQL数据库后,无法看到任何表或数据库。已配置以dev模式启动Keycloak,但问题仍未解决。以下是我的部署配置:

version: "3.7"

services:
  keycloak:        
    image: bitnami/keycloak:20.0.1
    container_name: keycloak_20
    environment:
      DB_VENDOR: POSTGRES
      DB_ADDR: postgres          
      KEYCLOAK_ADMIN_USER: admin
      KEYCLOAK_ADMIN_PASSWORD: admin
      KEYCLOAK_DATABASE_HOST: postgres
      KEYCLOAK_DATABASE_PORT: 5432
      KEYCLOAK_DATABASE_NAME: postgres
      KEYCLOAK_DATABASE_USER: postgres
      KEYCLOAK_DATABASE_PASSWORD: postgres
      KEYCLOAK_DATABASE_SCHEMA: public
      KEYCLOAK_EXTRA_ARGS: "-Dkeycloak.profile.feature.scripts=enabled"
      KC_HOSTNAME: postgres
      ENV KC_HOSTNAME_STRICT: false
      ENV KC_HTTP_ENABLED: true
    ports:
      - 8080:8080
    volumes:
      - ./keycloak/export:/tmp/export
      - ./rus-theme:/opt/bitnami/keycloak/themes/my-theme
      - ./keycloak/configuration/standalone-ha.xml:/bitnami/keycloak/configuration/standalone-ha.xml:ro
    command:
      - /bin/bash
      - -c 
      - |
        /opt/bitnami/keycloak/bin/kc.sh start-dev

    depends_on:
      - postgres
    
  postgres:
    image: postgres:10
    container_name: postgres
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: postgres
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
    ports:
    - "5432:5432"
  
  mailhog:
    # 连接容器名即可访问,示例:mailhog:1025
    image: mailhog/mailhog
    logging:
      driver: 'none'  # 禁用日志保存
    container_name: mailhog
    ports:
      - 1025:1025 # SMTP服务器
      - 8025:8025 # Web管理界面
  
volumes:
  postgres_data:
    driver: local

PostgreSQL数据库管理界面


问题排查与修复方案

核心错误点

  1. 环境变量混用冲突:同时使用了原生Keycloak旧版变量(DB_VENDOR、DB_ADDR)、Bitnami专属变量(KEYCLOAK_DATABASE_*)和原生新版Quarkus变量(KC_*),导致Keycloak无法正确识别数据库配置,默认使用内置H2数据库而非PostgreSQL。
  2. 环境变量格式错误:ENV KC_HOSTNAME_STRICT: false这类写法多余,Docker Compose中直接写变量名即可,无需加ENV前缀。
  3. 配置文件不兼容:挂载的standalone-ha.xml是Wildfly时代的配置文件,Quarkus版Keycloak已不再使用,会干扰正常配置加载。
  4. 主机名配置错误:KC_HOSTNAME: postgres将Keycloak主机名设为PostgreSQL容器名,会导致URL生成异常,影响初始化流程。

修正后的Docker Compose配置

version: "3.7"

services:
  keycloak:        
    image: bitnami/keycloak:20.0.1
    container_name: keycloak_20
    environment:
      # Bitnami专属数据库配置变量
      KEYCLOAK_DATABASE_HOST: postgres
      KEYCLOAK_DATABASE_PORT: 5432
      KEYCLOAK_DATABASE_NAME: postgres
      KEYCLOAK_DATABASE_USER: postgres
      KEYCLOAK_DATABASE_PASSWORD: postgres
      KEYCLOAK_DATABASE_SCHEMA: public
      # 管理员账号(Bitnami用KEYCLOAK_ADMIN而非KEYCLOAK_ADMIN_USER)
      KEYCLOAK_ADMIN: admin
      KEYCLOAK_ADMIN_PASSWORD: admin
      # Quarkus版配置参数,去掉多余ENV前缀
      KC_HOSTNAME_STRICT: "false"
      KC_HTTP_ENABLED: "true"
      # 额外启动参数
      KEYCLOAK_EXTRA_ARGS: "-Dkeycloak.profile.feature.scripts=enabled"
    ports:
      - 8080:8080
    volumes:
      - ./keycloak/export:/tmp/export
      - ./rus-theme:/opt/bitnami/keycloak/themes/my-theme
      # 移除冲突的standalone-ha.xml配置文件
    command:
      - /bin/bash
      - -c 
      - |
        /opt/bitnami/keycloak/bin/kc.sh start-dev
    depends_on:
      - postgres
    
  postgres:
    image: postgres:10
    container_name: postgres
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: postgres
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
    ports:
      - "5432:5432"
  
  mailhog:
    image: mailhog/mailhog
    logging:
      driver: 'none'
    container_name: mailhog
    ports:
      - 1025:1025 # SMTP服务器
      - 8025:8025 # Web管理界面
  
volumes:
  postgres_data:
    driver: local

验证步骤

  1. 清理旧数据卷,避免残留配置干扰:docker-compose down -v
  2. 重新启动服务:docker-compose up -d
  3. 查看Keycloak日志确认数据库连接:docker logs keycloak_20,检查是否出现成功连接PostgreSQL并初始化表的日志
  4. 再次连接PostgreSQL管理界面,即可看到Keycloak自动创建的一系列表(如user_entity、realm等)

内容的提问来源于stack exchange,提问作者Maxi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 22:31:11