为什么 docker compose volume 默认创建目录?

Why docker compose volume creates directory by default?

考虑这个 dockerc-compose.yml 文件:

version "3.9"
services:
  site:
    image: siteimage:latest
    volumes:
       /infra:/infra
       /site:/site
       /branding/logo.png:/branding/logo.png

重点是,如果 logo.png 在我的本地 PC 中不存在,docker 会在容器中为其创建一个目录,而不是什么都不做。

为什么 docker 会这样?我该如何改变它?我如何告诉 docker 在本地目录不存在时不创建目录,或者告诉它创建文件而不是目录?

注意:我们正在通过工具动态创建 docker-compose.yml 文件。因此请不要评论 你已经知道 logo.png 是否存在 。谢谢。

否,要么将其生成为文件夹,要么生成错误: Read Docs: Differences between -v and --mount behavior

因此编写一个 bash 脚本来检查该文件,如果它是一个文件夹,则将其删除并编写一个虚拟文件。然后从 docker 入口点调用此脚本,然后才是真正的过程..