Docker容器尝试装载作为文件的目录

时间:2019-06-25 09:51:24

标签: docker docker-compose craftcms

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

  

错误:craftcrafts不能启动服务craftcms:OCI运行时创建   失败:container_linux.go:344:导致启动容器进程   “ process_linux.go:424:容器初始化导致\” rootfs_linux.go:58:   将\\“ / host_mnt / c / src / composer.lock \\”安装到   rootfs   \\“ / var / lib / docker / overlay2 / b7084475699f911f17d38746b21b1b9694fedf6e096a4080109d429fa687a6db / merged \\”   在   \\“ / var / lib / docker / overlay2 / b7084475699f911f17d38746b21b1b9694fedf6e096a4080109d429fa687a6db / merged / var / www / composer.lock \\”   导致\\“不是目录\\” \“”:未知:您是否要挂载   目录到文件上(反之亦然)?检查指定的主机   路径存在,并且是预期的错误类型:时遇到错误   提出项目。

显然,Windows OS中的挂载目录与Linux OS中的挂载目录不同。您能帮我解决这个问题吗?

enter image description here

更新

在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

1 个答案:

答案 0 :(得分:1)

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

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

对于后者,进入docker首选项,然后重新配置驱动器共享,以确保包括与您的compose项目一起使用的驱动器,并且该docker具有您的当前密码(它执行Windows SMB挂载以将该驱动器共享给docker VM)。

当Docker尝试挂载不作为主机挂载存在的文件时,默认操作是在主机上创建目录(如果目录未正确共享,则可能仅在Docker VM中创建)并挂载该目录容器内的目录。而且如果该文件应该是文件而不是容器中的目录,则会出现错误。