You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下Make中${PWD}无法挂载Docker卷该如何解决?

解决Windows下Makefile挂载Docker卷的路径问题

核心原因

Windows环境下,Make的${PWD}/$(PWD)变量无法正确获取当前工作目录(部分场景下为空),且cmd/PowerShell的环境变量与Make的变量空间不互通,导致路径传递失败。

解决方案

使用Make**内置的跨平台变量$(CURDIR)**替代${PWD},它由Make自身维护,能在Windows/Linux下都正确返回当前工作目录的绝对路径,Docker for Windows会自动完成路径格式转换(将C:\xxx转为/c/xxx)。

修改后的Makefile指令:

start_docker:
	@docker run --rm -p 8888:8888 -it -v "$(CURDIR):/home/docker/app" my_image

注意:Makefile的命令行必须用Tab键缩进,不能用空格,否则会报错。

备选方案(针对MinGW/Git Bash环境)

如果使用的是MinGW或Git Bash自带的Make,也可以通过shell函数调用系统命令获取路径:

start_docker:
	@docker run --rm -p 8888:8888 -it -v "$(shell pwd -W):/home/docker/app" my_image

pwd -W会返回Windows风格的路径(如C:\project),同样能被Docker识别。

为什么原来的写法不行?

  • Windows的Make环境中,PWD环境变量并非默认存在,或仅返回类Unix格式的空/无效路径;
  • 直接在终端执行命令时,${PWD}是由PowerShell/cmd解析的,而Make执行时是在自己的环境中解析变量,两者不共享;
  • 使用$(PWD)时,cmd会优先将其解析为自身的变量,而非Make的变量,导致路径格式不符合Docker要求。

内容的提问来源于stack exchange,提问作者Adrien Pacifico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 05:05:26