Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将卷装载作为外部文件传递(docker compose)_Docker_Docker Compose - Fatal编程技术网

将卷装载作为外部文件传递(docker compose)

将卷装载作为外部文件传递(docker compose),docker,docker-compose,Docker,Docker Compose,我有一个docker-compose.yml文件,如下所示: name: image: docker/container container_name: coolcontainer restart: always volumes: - ${DIR1PATH}:/storage/${DIR1} - ${DIR2PATH}:/storage/${DIR2} - ${DIR3PATH}:/storage/${DIR3}

我有一个docker-compose.yml文件,如下所示:

  name:
    image: docker/container
    container_name: coolcontainer
    restart: always

    volumes:
      - ${DIR1PATH}:/storage/${DIR1}
      - ${DIR2PATH}:/storage/${DIR2}
      - ${DIR3PATH}:/storage/${DIR3}
      - ${DIR4PATH}:/storage/${DIR4}
是否可以将所有卷装载存储在单独的文件中,以便将docker-compose.yml替换为:

  name:
    image: docker/container
    container_name: coolcontainer
    restart: always

    volumes:
      ${CUSTOM_MOUNTS_FILE}

与您的要求不同,但您可以将多个撰写文件合并在一起。其中一个文件可能包含您的附加卷,而第一个文件只是您的服务定义。您的第二个文件如下所示:

version: '3'
services:
  name:
    volumes:
      - ${DIR1PATH}:/storage/${DIR1}
      - ${DIR2PATH}:/storage/${DIR2}
      - ${DIR3PATH}:/storage/${DIR3}
      - ${DIR4PATH}:/storage/${DIR4}

compose中还有一些扩展字段,允许您定义值,然后使用yaml锚定和别名插入值。例如。

我认为docker compose和yaml文件本身是不可能的。您可能需要创建一些ShellScript或go程序来实现这一点。好的,不用担心,谢谢!我目前正在通过以只读方式从docker主机挂载“/”来解决这个问题—这可能不是最好的方法,但它可以工作,因为它包含/mnt/中的所有根文件和驱动器。您实际想做什么,您需要超过三个卷挂载?备份;我在docker中运行了Duplicati,我在GitHub上运行了docker-compose.yml,我希望使其尽可能通用,即不硬编码可能与其他文件无关的文件路径。我看,有没有办法引用第一个docker compose文件中的第二个docker compose文件,或者在运行docker compose命令时,它们是否都需要作为文件参数传递?啊,那真的很有用!不过,在这种情况下,可能与您的其他建议不太接近