Dockerfile执行shell脚本报错No such file or directory(又名 Dockerfile中sh脚本格式引发的灾难)

工具的初衷是好的,但是工具如果不加以正确使用、或者不够完善。那将带来的是灾难。

使用Dockerfile进行镜像构建。里面有这么一行:

我在ENTRYPOINT处指定了一个脚本。它是在构建镜像时,从一个目录中copy进去的。它将会在docker run时会去执行run.sh里的内容。

但神奇的问题发生了。我docker build构建镜像成功完毕。docker run启动镜像时报错:

就这么一行!!我启动时指定镜像没有加-d后台启动,打印的实时日志。就一行这玩意':No such file or directory

没了,别的什么都没打印。

WTF!

漫长排查路~~~~

文件目录没问题;

Dockerfile语法查了查,没问题;

sh脚本内容看了下,也没发现啥问题。

问题在哪呢??

尝试在["/run.sh","-x"] 这里尝试加过-t、-x、-c啥的。基本都试了一遍。想着至少能定位下行号,或者多打印点什么出来,但没有。日志仍旧只有那一行,一个字符都不带多的。

下去抽颗smoke吧,这种问题就是来搞心态的。

迎着小风,闻着草味,思绪繁杂

忽然想起来,以前碰到过sh脚本的格式问题导致的报错。叫什么bad inte... no such file directory(时间久记不清了,后查证叫:bad interpreter: No such file or directory)。

这俩好像看起来有点像。

再一想,好像更像了。

赶紧掐灭 上去逮着vi run.sh。:set ff 一看。挖槽 真的是dos....

万只草泥马开始奔袭。

:set ff=unix修改保存后。重新构建启动,可以了!!

忍不住想吐槽一句:这报错报的也太人性化了,跟个鬼一样。

原文地址:https://www.cnblogs.com/haohao111/p/14836090.html