PhpStorm远程运行docker-compose添加卷挂载时报路径无效错误
问题原因
你遇到的报错是因为PhpStorm在远程执行docker-compose命令时,错误将你本地Windows系统的项目绝对路径作为挂载源传递给了远程Fedora服务器的Docker服务:
你在docker-compose.yml中写的相对路径./,在你直接登录服务器执行时会被解析为服务器当前工作目录的Linux格式绝对路径,符合Docker挂载要求;但通过PhpStorm远程执行时,PhpStorm默认会把相对路径解析为你本地Windows的项目路径C:/Users/user/Projects/my-raspberry-test,Linux系统的Docker服务无法识别Windows格式路径,就会抛出挂载路径无效的错误。
而你用Dockerfile直接运行无问题,是因为COPY指令是在镜像构建阶段把PhpStorm同步到服务器的文件复制进镜像,不需要绑定宿主机路径,所以不会触发该错误。
解决方法
- 方案1:配置PhpStorm路径映射
打开PhpStorm的「运行/调试配置」面板,找到你对应的Docker Compose运行配置,找到「路径映射(Path mappings)」设置项,添加一条映射规则:
本地路径填你Windows上的项目根目录(即C:/Users/user/Projects/my-raspberry-test),远程路径填Fedora服务器上存放该项目的绝对路径(比如/home/user/projects/my-raspberry-test,需要和你实际存的路径一致),保存配置后重新运行即可。 - 方案2:通过环境变量指定挂载源路径
把docker-compose.yml中的卷配置修改为:
之后在PhpStorm的Docker Compose运行配置的「环境变量」栏,添加volumes: - ${PROJECT_DIR:-.}:/var/www/html/PROJECT_DIR变量,值为远程服务器上项目的绝对路径即可。 - 方案3:使用PhpStorm远程开发模式
直接通过PhpStorm的远程开发功能打开服务器上的项目,而非本地打开项目再同步到服务器,此时docker-compose会直接读取服务器上的路径,不需要额外配置即可正常运行。
注意
配置完成后请确认PhpStorm已经将本地项目代码完整同步到远程服务器对应的挂载目录下,避免挂载后目录为空导致项目运行异常。
内容的提问来源于stack exchange,提问作者Peter Alexeev Dauwalter
相关产品推荐
相关产品推荐

