我正在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中的挂载目录不同。您能帮我解决这个问题吗?
更新
在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
答案 0 :(得分:1)
这通常表明src/composer.lock
不是文件,或者存在这些文件的驱动器未正确共享给Docker VM。
对于前者,请从中检查运行docker-compose
的目录,这是经过检查的目录,因此我无法为您提供更好的详细信息。您应该在其中将src\composer.lock
作为常规文件而不是目录。
对于后者,进入docker首选项,然后重新配置驱动器共享,以确保包括与您的compose项目一起使用的驱动器,并且该docker具有您的当前密码(它执行Windows SMB挂载以将该驱动器共享给docker VM)。
当Docker尝试挂载不作为主机挂载存在的文件时,默认操作是在主机上创建目录(如果目录未正确共享,则可能仅在Docker VM中创建)并挂载该目录容器内的目录。而且如果该文件应该是文件而不是容器中的目录,则会出现错误。