Docker 构建报错:exec /app/start.sh: no such file or directory
·
Docker 构建报错:exec /app/start.sh: no such file or directory
问题现象
Docker 构建时出现错误:
exec /app/start.sh: no such file or directory
明明文件存在,却提示找不到。
根本原因
Windows 系统使用 CRLF (\r\n) 换行符,Linux 使用 LF (\n) 换行符。
当 start.sh 在 Windows 上创建时,第一行 shebang 实际是:
#!/bin/bash\r
Linux 无法找到 /bin/bash\r 这个解释器,所以报 “no such file or directory”。
解决方案
方法1:Dockerfile 中转换(推荐)
COPY . .
RUN sed -i 's/\r$//' ./start.sh && chmod +x ./start.sh
sed -i 's/\r$//' ./start.sh 删除行末的 \r 字符。
方法2:添加 .gitattributes
在项目根目录创建 .gitattributes 文件:
* text=auto
*.sh text eol=lf
确保 .sh 文件无论在哪个系统都使用 LF 换行符。
更多推荐

所有评论(0)