【问题标题】:Docker container tries to mount a directory that is a fileDocker 容器尝试挂载一个作为文件的目录
【发布时间】:2019-06-25 09:51:24
【问题描述】:

我正在 docker 中构建工艺 cms,当我执行 docker-compose up 时出现以下错误:

错误:对于craftcms 无法启动服务craftcms:OCI 运行时创建 失败:container_linux.go:344:启动容器进程导致 "process_linux.go:424: 容器初始化导致\"rootfs_linux.go:58: 挂载 \\"/host_mnt/c/src/composer.lock\\" 到 根文件系统 \\"/var/lib/docker/overlay2/b7084475699f911f17d38746b21b1b9694fedf6e096a4080109d429fa687a6db/merged\\" 在 \\"/var/lib/docker/overlay2/b7084475699f911f17d38746b21b1b9694fedf6e096a4080109d429fa687a6db/merged/var/www/composer.lock\\" 导致 \\"not a directory\\"\"":未知:您是否尝试挂载 将目录复制到文件中(反之亦然)?检查指定主机是否 路径存在并且是预期的类型 ERROR: Encountered errors while 提出项目。

显然,Windows 操作系统中的挂载目录与 Linux 操作系统不同。你能帮我解决这个问题吗?

更新

从 docker-compose.yml,这是我挂载文件的位置:

craftcms:
    build:
      context: .
      dockerfile: ./infrastructure/docker/php-fpm/Dockerfile
    expose:
      - 9000
    volumes:
      - cpresources:/var/www/web/cpresources
      - ./src/vendor:/var/www/vendor
      - ./src/composer.json:/var/www/composer.json
      - ./src/composer.lock:/var/www/composer.lock
      - ./src/config:/var/www/config
      - ./src/modules:/var/www/modules
      - ./src/templates:/var/www/templates
      - ./src/web:/var/www/web

【问题讨论】:

  • 提供您的 docker-compose 文件。您似乎正在尝试挂载文件。
  • 请不要发布文字照片,而是发布带有代码格式的文字。否则,希望通过代码片段的副本回答您的问题的人需要手动重新输入您图片中的文本,任何搜索类似问题的人都找不到您的问题。

标签: docker docker-compose craftcms


【解决方案1】:

这通常表明src/composer.lock 不是文件,或者这些文件所在的驱动器未正确共享给 docker VM。

对于前者,请检查您运行 docker-compose 的目录,这是经过审查的目录,因此我无法为您提供比这更好的详细信息。您应该在其中有一个 src\composer.lock 作为常规文件,而不是目录。

对于后者,进入 docker 首选项,并重新配置驱动器共享以确保包含您的 compose 项目的驱动器,并且 docker 具有您当前的密码(它执行 windows SMB 挂载以将驱动器共享给 docker虚拟机)。

当 docker 尝试将不存在的文件挂载为主机挂载时,默认操作是在主机上创建一个目录(如果目录未正确共享,这可能仅在 docker VM 中)并挂载该目录容器内的目录。如果这应该是一个文件而不是容器内的目录,你会得到一个错误。

【讨论】:

  • 太好了,谢谢!我重置了凭据,问题就消失了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-10
  • 2016-06-10
  • 1970-01-01
  • 2016-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多