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

Liquibase Docker镜像对接Azure SQL AAD认证执行更新失败求助

问题根源说明

你遇到的报错核心原因有两点:

  1. MSAL4J无法独立运行,依赖多个第三方组件,仅单独添加msal4j jar包会缺少依赖导致加载失败
  2. 你使用的Liquibase 4.5.0版本存在已知的Azure AD认证兼容性缺陷,且默认携带的SQL Server JDBC驱动版本与msal4j 1.11.0匹配度较差

解决方案

方案1:构建自定义Liquibase镜像(最稳定,无需每次挂载依赖)

该方案将所有需要的依赖预封装到镜像中,避免挂载类路径带来的路径错误、缺失文件问题,操作步骤如下:

  1. 本地新建Dockerfile,内容参考:
# 建议使用4.20.0及以上的稳定版本,旧版本对Azure AD认证支持存在多处bug
FROM liquibase/liquibase:4.20.0

USER root

# 提前将所有需要的依赖jar包放到和Dockerfile同目录的deps文件夹下
COPY deps/*.jar /liquibase/lib/

RUN chown -R liquibase:liquibase /liquibase/lib/

USER liquibase
  1. 从Maven中央仓库下载以下版本的jar包,放到同目录的deps文件夹内:
  • mssql-jdbc 12.2.0.jre11
  • msal4j 1.13.8
  • oauth2-oidc-sdk 9.35.1
  • nimbus-jose-jwt 9.31
  • json-smart 2.4.8
  • accessors-smart 2.4.8
  1. 执行命令构建自定义镜像:
docker build -t liquibase-azure .
  1. 修改你的执行脚本,无需再挂载资源目录和指定classpath参数,调整后内容参考:
$path = $repositoryPath -replace '\\','/'
$internalVolumeMap = "$path/db:/liquibase/changelog" -replace '\\','/'
$connectionString = "jdbc:sqlserver://REDACTED.windows.net:1433;database=REDACTED;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;authentication=ActiveDirectoryPassword"

docker run --rm `
           -v $internalVolumeMap `
           liquibase-azure `
           --url=$connectionString `
           --changeLogFile=/liquibase/changelog/liquibaseChangeLog.json `
           --username=REDACTED `
           --password="REDACTED" `
           update

方案2:沿用原挂载逻辑的修复方法

如果你不想构建自定义镜像,可按以下要求调整原有配置:

  • 将方案1中列出的所有依赖jar包全部放到你本地的$path/db/resources目录下,不能仅存放msal4j单个jar
  • 修改执行脚本中的--classpath参数为:
    --classpath="/liquibase/changelog:/liquibase/classpath"
    无需逐个指定jar包路径,Liquibase会自动加载指定目录下的所有jar文件

注意事项

  • Azure AD认证的用户名需要填写完整账号格式,例如xxx@xxx.onmicrosoft.com,不可仅填写账号前缀
  • 若使用Azure AD服务主体认证,需将连接字符串中的authentication=ActiveDirectoryPassword替换为authentication=ActiveDirectoryServicePrincipal,密码字段填写服务主体的客户端密钥即可
  • 强烈建议升级Liquibase版本到4.19以上,避免旧版本已知的兼容性bug

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:24:06