docker-compose配置挂载卷时如何设置正确的相对路径?
Docker Compose 相对路径挂载问题解决方案
docker-compose 中以
./开头的相对路径,默认是相对于docker-compose.yml文件所在的目录进行拼接的。你的docker-compose.yml存放在app/docker/路径下,因此./对应的根路径就是app/docker/,原配置的./resources/changelog自然会被解析为app/docker/resources/changelog。
你可以选择以下任意一种方案解决:
- 方案1:修改挂载路径的相对层级,直接回退一级目录
把volumes配置里的路径从./resources/changelog改为../resources/changelog即可,../代表向上回退一层目录,会从app/docker/回退到app/,再拼接后续路径刚好匹配你期望的app/resources/changelog。
修改后的配置片段如下:liquibase: image: liquibase/liquibase volumes: - ../resources/changelog:/liquibase/changelog command: --changeLogFile=master.xml --url=jdbc:postgresql://postgres:5432/postgres?autoReconnect=true&useSSL=false --username=postgres --password=password update depends_on: - postgres networks: - my_network - 方案2:执行命令时指定项目根目录
如果你不想修改docker-compose.yml的配置,也可以在执行docker-compose命令时指定--project-directory参数,手动设置相对路径的基准目录。
比如在app/目录下执行如下命令:docker-compose -f docker/docker-compose.yml --project-directory . up
此时配置里的./会以你执行命令的app/目录为基准,原有./resources/changelog的配置无需修改即可正常生效。
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

