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

升级Keycloak 20时如何配置MariaDB数据库连接URL?

Keycloak 16升级到20的Docker Compose配置调整(MariaDB适配)

以下是适配Keycloak 20 + MariaDB的完整docker-compose.yml配置,同时修复原配置中的端口冲突问题:

version: "3.9"
services: 
    accounts:
        image: quay.io/keycloak/keycloak:20.0.3
        container_name: Accounts
        ports: 
            - 8080:8080
        environment: 
            - KC_FRONTEND_URL=https://accounts.example.local/auth
            - KC_PROXY=edge
            - KC_ADMIN_USER=user
            - KC_ADMIN_PASSWORD=pass
            - KC_DB=mariadb
            - KC_DB_URL=jdbc:mariadb://database:3306/accounts?useSSL=false&allowPublicKeyRetrieval=true
            - KC_DB_USERNAME=db_user
            - KC_DB_PASSWORD=db_pass
        command: ["start", "--optimized"]
        logging:
            driver: none
        restart: always
    database:
        image: mariadb:10.11
        container_name: AccountsDatabase
        ports:
            - 3306:3306
        environment:
            - MARIADB_ROOT_PASSWORD=root_pass
            - MARIADB_DATABASE=accounts
            - MARIADB_USER=db_user
            - MARIADB_PASSWORD=db_pass
        volumes:
            - /Temp/AccountsDatabases:/var/lib/mysql 
        logging:
            driver: none
        restart: always
    admin:
        image: adminer
        container_name: AccountsAdminer
        restart: always
        logging:
            driver: none
        ports:
            - 8081:8080
        environment:
            - ADMINER_DEFAULT_SERVER=database      

关键变更说明:

  • 镜像替换:Keycloak 17+官方镜像迁移到quay.io/keycloak/keycloak,不再使用jboss/keycloak,建议指定具体版本(如20.0.3)避免自动升级带来的兼容问题。
  • 环境变量重构:
    • 原KEYCLOAK_USER/KEYCLOAK_PASSWORD替换为KC_ADMIN_USER/KC_ADMIN_PASSWORD
    • 数据库配置改用KC_DB系列变量:KC_DB=mariadb指定数据库类型,KC_DB_URL直接配置JDBC连接URL
    • 原PROXY_ADDRESS_FORWARDING=true替换为KC_PROXY=edge,适配反向代理场景
    • 原KEYCLOAK_FRONTEND_URL替换为KC_FRONTEND_URL,若需保留旧版/auth上下文路径,已通过默认配置兼容(Keycloak 18+默认移除/auth,需额外添加KC_HTTP_RELATIVE_PATH=/auth)
  • MariaDB URL格式:标准格式为jdbc:mariadb://<主机>:<端口>/<数据库名>?<参数>,示例中:
    • database是Docker服务名,对应MariaDB容器
    • 3306是默认端口
    • accounts是数据库名
    • useSSL=false关闭SSL(测试环境用,生产建议开启)
    • allowPublicKeyRetrieval=true解决部分连接时的公钥获取问题
  • 启动命令:新版本Keycloak需要显式指定启动命令,start --optimized用于生产环境优化启动
  • 端口冲突修复:原配置中accounts和admin服务都映射8080端口,将admin服务改为8081端口避免冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:30:55