【问题标题】:How to specify site-specific volumes for docker-compose如何为 docker-compose 指定特定于站点的卷
【发布时间】:2018-10-17 15:02:25
【问题描述】:

我正在与多个合作者一起开展一个项目;为了共享代码和计算环境,我们建立了一个 github 存储库,其中包括一个 Dockerfiledocker-compose.yml 文件。我可以编写代码,我的协作者只需拉取存储库,运行 docker-compose up 并在我开发它们的同一环境中访问我的 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 是否允许这种功能?是否有实现此目的的最佳实践方法?如果没有,我很好奇是否有人知道排除此功能背后的动机和/或为什么它不是一个好主意。

提前致谢。

【问题讨论】:

    标签: docker docker-compose mounted-volumes


    【解决方案1】:

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

    DATA_PATH=/mnt/shared/data
    

    或您喜欢的DATA_PATH 的任何值。只需将 .env 添加到您的 .gitignore,以便每个主机将自己的配置保留在存储库之外,仅此而已。

    【讨论】:

    猜你喜欢
    • 2019-08-17
    • 2016-07-14
    • 2021-08-11
    • 2021-05-23
    • 2021-12-20
    • 2019-07-15
    • 2021-05-08
    • 2019-09-11
    • 2019-06-27
    相关资源
    最近更新 更多