【问题标题】:Docker-compose, remote context, path relative to local machine instead of remoteDocker-compose,远程上下文,相对于本地机器而不是远程的路径
【发布时间】:2020-12-27 07:53:12
【问题描述】:

我有一个非常简单的 docker-compose.yml:

version: '2.4'

services:
  containername:
    image: ${DOCKER_IMAGE}
    volumes:
      - ./config:/root/config

我正在使用通过 ssh 访问的远程登台服务器:

docker context create staging --docker "host=ssh://ubuntu@staging.example.com"
docker context use staging

但是,在我docker-compose up 之后,我的音量出现了意想不到的结果:

docker-compose --context staging up -d
docker inspect containername
...
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/Users/crummy/code/.../config",
                "Destination": "/root/config",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],
...

似乎./config 扩展为完整路径发生在 docker-compose 正在运行的机器上。不是运行 Docker 的机器。

我可以通过硬编码整个路径来解决这个问题:/home/ubuntu/config:/root/config。但这使我的 docker-compose 文件变得不那么灵活。有没有办法让点扩展发生在远程机器上?

【问题讨论】:

    标签: docker docker-compose yaml


    【解决方案1】:

    不,docs say 那个:

    您可以在主机上挂载一个相对路径,该路径相对于正在使用的 Compose 配置文件的目录进行扩展。相对路径应始终以 ... 开头

    我认为发生这种情况有两个原因:

    1. docker-compose 没有简单的方法和客观的方法可以找出如何在这种情况下扩展.,因为无法知道. 对 ssh 客户端(主页?同一个文件夹? )。

    2. 即使docker cli 使用不同的上下文,扩展是由docker-compose 工具完成的,它不知道上下文切换。

    即使使用环境变量也可能会造成问题,因为环境扩展也会发生在您运行docker-compose 命令的机器上。

    【讨论】:

    • 这是有道理的。我已经对其进行了硬编码,可惜失去了灵活性,但没关系。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2014-12-06
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    • 2021-08-28
    • 2011-04-19
    相关资源
    最近更新 更多