Windows下Docker构建失败:./mvnw解释器错误(退出码126)求解决方案
解决Windows 10下构建Docker镜像时mvnw脚本的换行符错误
构建时出现如下错误:
#0 0.385 /bin/sh: ./mvnw: /bin/sh^M: bad interpreter: No such file or directory ------ failed to solve: executor failed running [/bin/sh -c ./mvnw install -DskipTests]: exit code: 126
错误原因
Windows系统默认使用CRLF(回车+换行)作为文本文件的换行符,而Linux容器中的bash仅识别LF(换行)。mvnw脚本在Windows环境下被保存为CRLF格式,导致容器执行时将末尾的^M(即CR字符)视为命令的一部分,从而找不到正确的解释器路径。
解决方法
方法1:调整Git配置避免换行符问题(推荐)
- 设置Git全局配置,提交时自动将CRLF转换为LF:
git config --global core.autocrlf input - 对于已克隆的仓库,重新检出文件以应用LF格式:
git rm --cached -r . git reset --hard - 重新执行Docker构建命令即可。
方法2:直接转换mvnw脚本的换行符
- 在Git Bash中执行以下命令,移除mvnw脚本中的CR字符:
sed -i 's/\r$//' mvnw - 若Git Bash中没有
sed,也可以使用dos2unix工具(先安装:sudo apt-get install dos2unix):dos2unix mvnw - 转换完成后重新构建镜像。
方法3:在Dockerfile中添加预处理步骤
- 修改Dockerfile,在执行mvnw命令前先处理换行符:
# 先转换mvnw的换行符 RUN sed -i 's/\r$//' mvnw # 再执行构建命令 RUN ./mvnw install -DskipTests - 保存Dockerfile后重新构建镜像。
内容的提问来源于stack exchange,提问作者simonroof
相关产品推荐
相关产品推荐

