当前,我正在尝试将两个文件夹(./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
也是如此;所以我只想挂载并合并这些文件夹,而无需更改主机文件。
答案 0 :(得分:1)
我认为您无法避免这种行为:Docker需要创建文件系统条目,以便可以将test/...
挂载的绑定挂载附加到该文件系统条目。如果要绑定安装文件,则文件必须首先存在于目标位置。对于目录也是如此。
这意味着在执行绑定挂载之前,Docker首先创建一个新的(空)文件或目录来提供挂载目标。这就是您在app
目录中看到的内容。
您的选择要么是(a)随它一起使用,要么是(b)重组您的项目,以便您无需将安装的东西绑定到现有的绑定安装中。