在 docker-compose 中设置相对路径

Max*_*Max 2 docker docker-compose

尝试设置相对路径来安装文件,但它添加到他所在的路径文件夹(撰写文件)。

  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
Run Code Online (Sandbox Code Playgroud)

./ 路径:app\docker\resources\changelog 这里有额外的文件夹“docker”,里面有 docker-compose 文件。

我期望 app\resources\changelog,如何设置正确的相对路径?

Dav*_*aze 6

文件中的大多数路径docker-compose.yml(包括volumes:绑定安装位置)都相对于 Compose 文件的位置。如果您有多个 Compose 文件,它们将相对于第一个文件。相反,不限制使用相对路径或..转到父目录。

所以如果你的目录布局是

app
+-- docker
|   \-- docker-compose.yml
\-- resources
    \-- changelog
Run Code Online (Sandbox Code Playgroud)

并从app您正在运行的目录中

docker-compose -f docker/docker-compose.yml up
Run Code Online (Sandbox Code Playgroud)

路径volumes:是相对于 Compose 文件的位置而不是当前目录来解析的,因此您可以指定

volumes:
  - ../resources/changelog:/liquibase/changelog
Run Code Online (Sandbox Code Playgroud)

(在 Dockerfile 中,该COPY指令只能查看构建上下文目录,并且不能用于..跳出该目录,但这是特定于映像构建的。通常的解决方案build: ..是在 Compose 文件中指定或类似的内容以便构建上下文是包含需要包含的文件的任何目录的父目录。)