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 换行符。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐