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

Docker容器在Windows Powershell运行失败但WSL2正常的问题排查

问题排查与解决

核心原因:换行符格式差异

Windows默认使用CRLF(回车+换行)作为文本文件的换行符,而Linux容器内的Shell脚本要求必须用LF(仅换行)格式。当你在Windows环境克隆代码时,Git默认会自动将仓库里的LF换行符转换为CRLF,导致容器内执行/start_reload.sh时,系统会把CR字符当成命令路径的一部分,最终抛出“找不到文件”的错误——本质是脚本解释器无法识别带CR的脚本内容。

具体解决步骤

1. 临时修复当前代码目录

在Windows PowerShell中进入代码根目录,执行以下命令强制Git保留仓库原有的LF换行符:

git config core.autocrlf false
git rm --cached -r .
git reset --hard

执行后重新构建镜像即可。

2. 永久配置避免后续问题

全局设置Git,让它对所有仓库的文本文件采用“拉取不转换、提交转LF”的规则,兼顾Windows编辑和Linux容器需求:

git config --global core.autocrlf input

3. Dockerfile层面加固(可选)

如果想从构建环节彻底规避这个问题,可以在Dockerfile中添加换行符转换步骤(以Debian/Ubuntu系镜像为例):

# 安装换行符转换工具
RUN apt-get update && apt-get install -y dos2unix && rm -rf /var/lib/apt/lists/*

# 复制脚本后转换为LF格式,并赋予执行权限
COPY start_reload.sh /start_reload.sh
RUN dos2unix /start_reload.sh && chmod +x /start_reload.sh

4. 确认脚本执行权限

额外检查Dockerfile是否给了脚本执行权限,缺少权限也可能触发类似错误:

RUN chmod +x /start_reload.sh

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:55:20