docker-compose只读绑定卷合并

时间:2019-02-25 22:05:18

标签: docker docker-compose

当前,我正在尝试将两个文件夹(./app + ./test/public)和一个文件(./test/test.py)装入容器中的共享文件夹(类型:bind),所以我始终在容器中包含当前代码,而无需重新启动。问题是/test中的内容也已安装到主机系统中的/app中。可以避免吗?

这是我的示例文件:

volumes:
  - "./app:/app"

  - "./test/public:/app/test/public"
  - "./test/test.py:/app/test.py"

我已经搜索了大约一个小时的ninternet并阅读了docker-compose文档,但是我不知道该如何解决这个问题。

希望您可以提供帮助:)

edit:docker在主机上组成./app后,包含 ./app/test/public./app/test.py也是如此;所以我只想挂载并合并这些文件夹,而无需更改主机文件。

1 个答案:

答案 0 :(得分:1)

我认为您无法避免这种行为:Docker需要创建文件系统条目,以便可以将test/...挂载的绑定挂载附加到该文件系统条目。如果要绑定安装文件,则文件必须首先存在于目标位置。对于目录也是如此。

这意味着在执行绑定挂载之前,Docker首先创建一个新的(空)文件或目录来提供挂载目标。这就是您在app目录中看到的内容。

您的选择要么是(a)随它一起使用,要么是(b)重组您的项目,以便您无需将安装的东西绑定到现有的绑定安装中。