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

Docker运行Liquibase update报错:指定文件未在搜索路径中找到

解决方案

问题原因

Liquibase 默认的文件搜索路径不包含你挂载的 /db 目录,即使文件已映射到容器内,也无法被识别到。以下是几种可行的修复方案:


方案一:将卷映射到Liquibase默认搜索路径

把本地的 db 目录直接挂载到 Liquibase 默认会搜索的 /liquibase/changelog 路径下,无需额外配置搜索路径:

docker run --rm --network host -v /home/richardmarais/Development/IdeaProjects/travellinck-javaee/corporateInterface/src/main/resources/db:/liquibase/changelog \
liquibase/liquibase update \
--changelog-file=local/changelog-local-master.xml \
--url="jdbc:postgresql://localhost:5431/pims" \
--username=postgres \
--password=password

这里 --changelog-file 使用相对路径即可,因为 /liquibase/changelog 是Liquibase默认搜索路径之一。


方案二:添加搜索路径参数

保留原卷映射,通过 --search-path 参数将 /db 加入Liquibase的搜索范围:

docker run --rm --network host -v /home/richardmarais/Development/IdeaProjects/travellinck-javaee/corporateInterface/src/main/resources/db:/db \
liquibase/liquibase update \
--changelog-file=local/changelog-local-master.xml \
--search-path=/db \
--url="jdbc:postgresql://localhost:5431/pims" \
--username=postgres \
--password=password

此时 --changelog-file 可以用相对路径(基于 /db),也可以继续使用绝对路径 /db/local/changelog-local-master.xml。


方案三:先验证卷挂载是否正常

如果上述方案仍无效,先排查挂载是否成功或存在权限问题:

docker run --rm -v /home/richardmarais/Development/IdeaProjects/travellinck-javaee/corporateInterface/src/main/resources/db:/db ubuntu ls -l /db/local/
  • 如果能看到 changelog-local-master.xml 文件,说明挂载正常;
  • 如果看不到,检查本地路径拼写是否正确,或给本地文件添加读权限:
    chmod +r /home/richardmarais/Development/IdeaProjects/travellinck-javaee/corporateInterface/src/main/resources/db/local/changelog-local-master.xml
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 18:01:21