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_Mounted Volumes - Fatal编程技术网

如何为docker compose指定特定于站点的卷

如何为docker compose指定特定于站点的卷,docker,docker-compose,mounted-volumes,Docker,Docker Compose,Mounted Volumes,我正在与多个合作者合作一个项目;为了共享代码和计算环境,我们设置了一个github存储库,其中包括一个Dockerfile和dockercompose.yml文件。我可以编写代码,我的合作者只需拉取存储库,运行docker compose,就可以在我开发jupyter笔记本的相同环境中访问它们 唯一的问题是,因为我们在不同的地点工作,我们计算的数据在不同的地点。因此,我希望我的docker compose.yml包括: volumes: - /mnt/shared/data:/dat

我正在与多个合作者合作一个项目;为了共享代码和计算环境,我们设置了一个github存储库,其中包括一个
Dockerfile
dockercompose.yml
文件。我可以编写代码,我的合作者只需拉取存储库,运行docker compose,就可以在我开发jupyter笔记本的相同环境中访问它们

唯一的问题是,因为我们在不同的地点工作,我们计算的数据在不同的地点。因此,我希望我的
docker compose.yml
包括:

  volumes:
    - /mnt/shared/data:/data
而我的合作者需要它来说

  volumes:
    - /Volumes/storage/data:/data
我得到了一种方法来实现这一点,就是使用一个环境变量;在
docker compose.yml
文件中:

  volumes:
    - "$DATA_PATH":/data
这迫使他们运行类似于:

DATA_PATH=/Volumes/storage/data docker-compose up
作为一个解决方案,这不一定是一个问题,但我觉得它很笨重,并且无法在存储库中进行自我记录。我可以将docker compose包装在shell脚本中(这是几乎所有问题的潜在解决方案),但这也让人感觉笨拙。我不禁怀疑这里有更好的解决办法。docker compose是否允许这种功能?是否有实现这一目标的最佳实践方法?如果没有,我很好奇是否有人知道排除此功能背后的动机可能是什么和/或为什么它被认为不是一个好主意


提前谢谢。

你们非常接近。我想补充的是,您有一个特定于主机的
.env
文件,请参阅,在每台计算机上,与
docker compose.yml
位于同一文件夹中,其中

DATA_PATH=/mnt/shared/data

或者您喜欢的
DATA\u PATH
的任何值。只需将
.env
添加到您的
.gitignore
,这样每个主机都可以在存储库中保留自己的配置,就这样。

啊,谢谢,这正是我想要的!对于其他人来说,这里是相关的文档链接:感谢链接,你是对的,提供文档链接总是更好的,我会将此添加到答案中。