首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

解决dockerCMDENTRYPOINT执行sh脚本报:notfoundrun.sh:

2024-02-08 来源:化拓教育网
解决dockerCMDENTRYPOINT执⾏sh脚本报:

notfoundrun.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:就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

因篇幅问题不能全部显示,请点此查看更多更全内容