Windows10下React搭配Docker使用yarn出现install\r错误该如何解决?
问题原因
核心是Windows和Linux类系统的换行符兼容性问题:
- Windows系统默认的文本换行符为
CRLF(即\r\n),而你使用的Alpine镜像属于Linux系统,仅识别LF(即\n)作为换行符 - 你本地Windows上的
bootup.sh脚本保存时用了CRLF格式,被挂载到容器中执行时,每行末尾的\r会被Shell识别为命令的一部分,才会出现Command "install\r" not found、脚本语法解析错误的报错 - 另一台Ubuntu设备本身默认使用LF换行,所以运行正常
解决方案
方案1:修改Git全局配置,避免自动转换换行符
Windows上Git默认会开启自动换行符转换,拉取代码时自动把LF转为CRLF,提交时再转回去,执行以下命令关闭该配置即可:
git config --global core.autocrlf false
配置完成后重新克隆仓库,再重新构建容器即可。
方案2:直接修改本地bootup.sh的换行符格式
用代码编辑器(比如VS Code、Notepad++)打开bootup.sh,把换行符格式从CRLF改为LF,保存后重新构建容器即可。
- 以VS Code为例,点击编辑器右下角的
CRLF标识,在弹出的选项中选择LF后保存文件即可。
方案3:在Dockerfile中增加换行符转换步骤(无需修改本地配置)
在Dockerfile中添加一行命令,构建镜像时自动把脚本的CRLF转为LF,修改后的Dockerfile对应部分如下:
ADD ./bootup.sh /var/www RUN cd /var/www # 新增以下行,用dos2unix转换换行符 RUN apk add --no-cache dos2unix && dos2unix /var/www/bootup.sh RUN chmod +x /var/www/bootup.sh
修改后重新构建镜像即可生效。
内容的提问来源于stack exchange,提问作者E to the I
相关产品推荐
相关产品推荐

