解决docker CMD/ENTRYPOINT执行sh脚本报: not found/run.sh:

发布时间:2022-04-25 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了解决docker CMD/ENTRYPOINT执行sh脚本报: not found/run.sh:脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

dockerfile配置没有问题,为什么执行ENTRYPOINT命令时一直错误?

容器一启动就退出了。

查了不少资料,想了好久才发现原因

run.sh是被COPY指令复制到容器中的,而本机是windows,默认的换行符是\n,故而复制过去无法被执行。

解决办法很简单,切换文件格式为LF即可。

补充知识:docker中启动容器时CMD调用的sh脚本中if命令报未预期的符号 if[[的解决办法

最近通过Dockerfile编写镜像,CMD中调用的是sh脚本(start.sh)进行启动容器,通过docker run启动时,启动不成功,进行docker LOGs 容器ID,发现报错为:未预期的符号 if [[

我直接在外部linux系统调用执行start.sh是成功的,通过docker exec 进入容器,在容中调用start.sh也未报错,命令中需要启动的程序都成功启动。

脚本直接执行没问题,通过docker run却报错,百思不得其解。

start.sh中报错代码段如下

if [[ -e /home/dc/testnn-aaa.zip ]];then
 rm -rf /home/testnn-aaa
 unzip -q -o -d /home testnn-aaa.zip
 echo "unzip zip finished" 
else 
 echo "dc zip not exist"
fi

经过查阅比较,因为我的start.sh在报错语句之前也有if语句,但是没报错,发现两处区别为第一处if使用的是单[],将代码改为[],则成功,修改如下:

if [ -e /home/dc/testnn-aaa.zip ];then

以上这篇解决docker CMD/ENTRYPOINT执行sh脚本报: not found/run.sh:就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本宝典。

脚本宝典总结

以上是脚本宝典为你收集整理的解决docker CMD/ENTRYPOINT执行sh脚本报: not found/run.sh:全部内容,希望文章能够帮你解决解决docker CMD/ENTRYPOINT执行sh脚本报: not found/run.sh:所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。