我正在尝试使用 docker 运行 liquibase 更新,但我的卷映射方式似乎不起作用,它在我的本地环境中找不到文件。有什么想法吗?
我运行以下 docker cmd:
docker run --rm --network host -v /home/richardmarais/Development/IdeaProjects/travellinck-javaee/corporateInterface/src/main/resources/db:/db \
liquibase/liquibase update \
--changelog-file=/db/local/changelog-local-master.xml \
--url="jdbc:postgresql://localhost:5431/pims" \
--username=postgres \
--password=password
并得到:
####################################################
## _ _ _ _ ##
## | | (_) (_) | ##
## | | _ __ _ _ _ _| |__ __ _ ___ ___ ##
## | | | |/ _` | | | | | '_ \ / _` / __|/ _ \ ##
## | |___| | (_| | |_| | | |_) | (_| \__ \ __/ ##
## \_____/_|\__, |\__,_|_|_.__/ \__,_|___/\___| ##
## | | ##
## |_| ##
## ##
## Get documentation at docs.liquibase.com ##
## Get certified courses at learn.liquibase.com ##
## ##
####################################################
Starting Liquibase at 06:39:31 (version 4.25.1 #690 built at 2023-12-18 16:29+0000)
Liquibase Version: 4.25.1
Liquibase Open Source 4.25.1 by Liquibase
ERROR: Exception Details
ERROR: Exception Primary Class: ChangeLogParseException
ERROR: Exception Primary Reason: The file /db/local/changelog-local-master.xml was not found in the configured search path:
- /liquibase
- /liquibase/changelog
- /liquibase/classpath
- /liquibase/internal/lib/liquibase-core.jar
- /liquibase/lib
- /liquibase/internal/lib/mariadb-java-client.jar
- /liquibase/internal/lib/jaybird.jar
- /liquibase/internal/lib/snowflake-jdbc.jar
- /liquibase/internal/lib/jcc.jar
- /liquibase/internal/lib/h2.jar
- /liquibase/internal/lib/commons-text.jar
- /liquibase/internal/lib/jaxb-runtime.jar
- /liquibase/internal/lib/liquibase-commercial.jar
- /liquibase/internal/lib/ojdbc8.jar
- /liquibase/internal/lib/jaxb-api.jar
- /liquibase/internal/lib/picocli.jar
- /liquibase/internal/lib/hsqldb.jar
- /liquibase/internal/lib/sqlite-jdbc.jar
- /liquibase/internal/lib/commons-collections4.jar
- /liquibase/internal/lib/commons-lang3.jar
- /liquibase/internal/lib/mssql-jdbc.jar
- /liquibase/internal/lib/opencsv.jar
- /liquibase/internal/lib/postgresql.jar
- /liquibase/internal/lib/snakeyaml.jar
- /liquibase/internal/lib/jaxb-core.jar
- /liquibase/internal/lib
More locations can be added with the 'searchPath' parameter.
ERROR: Exception Primary Source: 4.25.1
Unexpected error running Liquibase: The file /db/local/changelog-local-master.xml was not found in the configured search path:
- /liquibase
- /liquibase/changelog
- /liquibase/classpath
- /liquibase/internal/lib/liquibase-core.jar
- /liquibase/lib
- /liquibase/internal/lib/mariadb-java-client.jar
- /liquibase/internal/lib/jaybird.jar
- /liquibase/internal/lib/snowflake-jdbc.jar
- /liquibase/internal/lib/jcc.jar
- /liquibase/internal/lib/h2.jar
- /liquibase/internal/lib/commons-text.jar
- /liquibase/internal/lib/jaxb-runtime.jar
- /liquibase/internal/lib/liquibase-commercial.jar
- /liquibase/internal/lib/ojdbc8.jar
- /liquibase/internal/lib/jaxb-api.jar
- /liquibase/internal/lib/picocli.jar
- /liquibase/internal/lib/hsqldb.jar
- /liquibase/internal/lib/sqlite-jdbc.jar
- /liquibase/internal/lib/commons-collections4.jar
- /liquibase/internal/lib/commons-lang3.jar
- /liquibase/internal/lib/mssql-jdbc.jar
- /liquibase/internal/lib/opencsv.jar
- /liquibase/internal/lib/postgresql.jar
- /liquibase/internal/lib/snakeyaml.jar
- /liquibase/internal/lib/jaxb-core.jar
- /liquibase/internal/lib
More locations can be added with the 'searchPath' parameter.
这是我本地操作系统(Ubuntu)上的一个文件:
/home/richardmarais/Development/IdeaProjects/travellinck-javaee/corporateInterface/src/main/resources/db/local/changelog-local-master.xml
文档有点不确定,但它和你得到的输出似乎表明除了文件名之外还需要搜索路径https://docs.liquibase.com/parameters/search-path.html参数.
似乎它现在正在尝试从默认搜索路径搜索名为
/db/local/changelog-local-master.xml
的文件,而不是直接使用 /db/local/changelog-local-master.xml
文件路径。
如果您已验证该文件确实存在于该位置,请尝试使用
--search-path /db/local/
将路径添加到搜索路径,并将 --changelog-file
更改为 changelog-local-master.xml
。