【问题标题】:Why docker compose volume creates directory by default?为什么 docker compose volume 默认创建目录?
【发布时间】:2022-08-18 04:00:18
【问题描述】:

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

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

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

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

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

  • 我不明白你期望的行为是什么。如果卷的目录不存在,服务的创建是否会失败?以及如何自动创建 png 文件?

标签: docker docker-compose


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我有同样的问题。

    我不确定,但可以,你只需安装两次?

    第一次挂载目录,然后挂载文件?

    【讨论】:

      猜你喜欢
      • 2019-08-10
      • 2021-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多