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

Docker容器启动即退出(Exited 127):./env.sh未找到问题求助

问题排查与解决

报错/bin/sh: ./env.sh: not found的核心原因是Windows的CRLF换行符与Linux容器的LF换行符不兼容,再加上可能的脚本权限问题,具体分析和解决步骤如下:

1. 换行符不兼容导致解释器识别失败

Windows下保存的env.sh使用CRLF(\r\n)换行,容器内的Linux系统会把脚本第一行的#!/bin/sh识别成#!/bin/sh\r,系统找不到带\r后缀的解释器,因此抛出“not found”错误。

解决办法:

  • VS Code直接转换:打开env.sh,点击右下角状态栏的「CRLF」选项,切换为「LF」后保存文件。
  • Git配置自动转换:如果用Git管理代码,执行git config core.autocrlf input,让Git拉取代码时自动将CRLF转为LF(提交时保留LF格式),之后重新拉取或提交文件。
  • Dockerfile内处理:若无法修改本地文件,可在Dockerfile中添加换行符转换命令(需先安装工具):
    RUN apt-get update && apt-get install -y dos2unix
    RUN dos2unix ./env.sh
    

2. 脚本缺少可执行权限

Windows下文件权限不会被系统识别,env.sh复制到容器后可能没有执行权限,也会导致无法运行。

解决办法:

在Dockerfile中添加权限设置命令:

RUN chmod +x ./env.sh

3. 优化CMD命令写法

将CMD改为显式调用shell执行命令,避免路径或解析异常:

CMD sh -c './env.sh > ./public/env.js && yarn start'

按以上步骤调整后,重新构建镜像并运行,即可解决容器启动后立刻停止的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 16:38:15