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

Docker容器提示run.sh不存在,无法运行多个Python脚本

排查Docker容器执行run.sh报错"no such file or directory"的问题

问题根源排查

克隆仓库并执行docker-compose up -d后,查看myapp容器日志,定位到两个核心问题:

  • run.sh无执行权限:通过COPY命令复制到容器的脚本默认没有可执行权限,容器无法直接调用执行。
  • Windows换行符导致解释器识别失败:如果run.sh是在Windows环境下编写的,脚本使用CRLF换行符,Linux容器中的bash解释器会把#!/bin/bash\r当作完整的命令路径,从而抛出"no such file or directory"(实际是找不到带\r后缀的解释器)。

修复步骤

1. 给run.sh添加执行权限

在Dockerfile中添加RUN chmod +x run.sh命令,确保脚本具备可执行权限。修改后的Dockerfile关键部分如下:

WORKDIR /usr/src/app
COPY . .
# 安装依赖(如果有requirements.txt)
RUN pip install --no-cache-dir -r requirements.txt
# 添加执行权限
RUN chmod +x run.sh
CMD ["./run.sh"]

同时建议明确设置WORKDIR,确保后续命令在指定目录下执行。

2. 修正脚本换行符

将run.sh的换行符从CRLF改为LF:

  • 用VS Code打开run.sh,点击右下角的"CRLF",切换为"LF"后保存。
  • 或者用Git命令转换:git config core.autocrlf false,重新提交脚本文件。

3. 确保run.sh的shebang正确

脚本开头必须包含正确的解释器声明:

#!/bin/bash

# 后台运行producer.py
python producer.py &
# 后台运行consumer.py
python consumer.py &
# 前台运行test_conn.py
python test_conn.py

验证修复

重新构建镜像并启动容器:

docker-compose down
docker-compose up -d --build
docker logs myapp

此时容器应该能正常启动并运行三个Python脚本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:42:05