• 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修改保存后。重新构建启动,可以了!!

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

  • 相关阅读:
    用X++读取文本文件(txt文件)的例子
    找出整个AX系统使用某个扩展类型的所有表和字段
    关于代码操作AOT
    检查所有表Relations是否为unknown
    strSplit分隔文本以container返回
    POJ 1850, Code
    用匈牙利算法求二分图的最大匹配(转载)
    POJ 2533, Longest Ordered Subsequence
    POJ 1159, Palindrome
    POJ 3252, Round Numbers
  • 原文地址:https://www.cnblogs.com/haohao111/p/14836090.html
Copyright © 2020-2023  润新知