Docker执行develop.sh报错:文件不存在但已置于根目录
解决Docker执行
develop.sh报错no such file or directory的问题 可能的原因及修复方案
1. 给develop.sh添加执行权限
Dockerfile仅复制了脚本文件,但未赋予容器内脚本可执行权限,导致无法运行。修改Dockerfile,在复制脚本后添加权限配置:
COPY develop.sh . RUN chmod +x develop.sh
或者在最后一次全量复制后补全权限:
COPY . . RUN chmod +x ./develop.sh
2. 修复脚本换行格式
若在Windows环境下拉取或编辑过develop.sh,脚本行尾会是CRLF格式,而Linux容器仅识别LF格式,这会触发执行报错。
- 本地修复:用VS Code等编辑器打开脚本,点击右下角行尾格式标识,切换为LF后保存,再重新构建镜像。
- Dockerfile内修复:先安装格式转换工具,再修正脚本:
RUN apt-get install -y python dos2unix RUN dos2unix ./develop.sh
3. 调整ENTRYPOINT执行路径
改用绝对路径执行脚本,规避相对路径的潜在问题:
ENTRYPOINT ["/app/medusa/develop.sh"]
或使用shell形式的ENTRYPOINT(通过shell进程执行脚本,兼容更多路径与权限场景):
ENTRYPOINT ./develop.sh
4. 修正文件复制顺序问题
当前Dockerfile先单独复制develop.sh,之后又执行COPY . .全量覆盖。若本地develop.sh本身无执行权限或格式错误,第二次复制会覆盖已修正的文件。可调整复制顺序,或确保本地develop.sh本身是LF格式且具备可执行权限。
内容的提问来源于stack exchange,提问作者Anan Saadi
相关产品推荐
相关产品推荐

