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

Windows 10 WSL2下Docker构建镜像报错/bin/sh: /usr/bin/create-user.sh: not found

问题排查与解决方案

核心错误原因

报错exit code 127提示/usr/bin/create-user.sh: not found,但COPY和chmod步骤都执行成功,说明文件确实已经被复制到镜像内,问题出在脚本可执行性的兼容问题,常见原因如下:

  • 换行符不兼容:Windows/WSL2环境下编辑的shell脚本默认使用Windows的CRLF(\r\n)换行符,而Alpine镜像内置的shell是ash,无法识别CR字符,会将CR识别为文件名的一部分,导致系统认为脚本不存在。
  • shebang解释器不存在:如果create-user.sh首行写的是#!/bin/bash,Alpine镜像默认没有预装bash,找不到解释器也会抛出「文件不存在」的错误。
  • 架构不兼容(极低概率):使用的是i386架构的基础镜像,如果WSL2是x86_64架构且没有配置跨架构运行环境,也可能出现执行异常。

对应解决方法

  1. 转换脚本换行符
    在WSL2终端的构建工作目录下执行如下命令,将脚本换行符转换为Linux兼容的LF(\n)格式:
# 先安装dos2unix如果没有的话
sudo apt update && sudo apt install -y dos2unix
# 转换两个脚本的换行符
dos2unix create-user.sh startup.sh

如果不想安装dos2unix,也可以用sed直接修改:

sed -i 's/\r$//' create-user.sh startup.sh
  1. 修正shebang行
    打开create-user.sh和startup.sh,将首行修改为Alpine内置支持的sh解释器:
#!/bin/sh

如果确实需要使用bash语法,可以在Dockerfile的RUN执行脚本前,先安装bash:

RUN apk add --no-cache bash
  1. 可选调试步骤
    如果修改后还是报错,可以在chmod步骤之后临时加一行调试命令,确认文件状态:
RUN \
   chmod +x /usr/bin/create-user.sh && \
   chmod +x /usr/bin/startup.sh && \
   ls -la /usr/bin/ | grep .sh && \
   head -n 5 /usr/bin/create-user.sh

重新构建时就能看到文件是否存在、权限是否正确、首行shebang是否正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:15:04