运行 容器启动失败时执行 b。 Docker 适用于 Windows

Run execlineb when container start failed. Docker for windosw

我正在尝试 运行 启动后 docker 容器内的简单脚本。最初,以前的开发人员决定在内部使用 s6。

#!/usr/bin/execlineb -P

foreground { sleep 2 }
nginx

当我尝试开始时收到这条消息

 execlineb: usage: execlineb [ -p | -P | -S nmin | -s nmin ] [ -q | -w | -W ] [ -c commandline ] script args

执行此脚本或 execline 似乎有问题。

我在 windows10 下为 windows 使用 docker,但是如果其他人试图在 ubuntu(或任何其他 linux) 一切正常。

任何人都可以帮助解决此类问题吗?

DockerImage:简单alpine

根据我们对这个 "HUGE" 问题的研究,我们找到了两种解决方法。肯定是特殊符号的问题,比如 '\r'

选项 1 dostounix:

  1. 在你的容器中安装 dostounix(在 docker 文件中)

    运行 apk --no-cache 添加 \ dos2unix \

  2. 运行 它违反了你的 sh 脚本。

    运行 {PathToYourFiles} 中的文件;做 \ dos2unix $文件; \ chmod a+xwr $文件; \ 完成

  3. 欣赏你的剧本。

选项 2 VsCode(或任何文本编辑器):

  1. CRLF'End Of Line Sequence'更改为LF VS Code bottom panel Line endings options
  2. 欣赏你的剧本。