首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >该命令返回非零代码: 127

该命令返回非零代码: 127
EN

Stack Overflow用户
提问于 2017-09-23 08:05:17
回答 1查看 17.4K关注 0票数 5

我正在尝试构建下面的Dockerfile,但在RUN ocp-indent --help上显示ocp-indent: not found The command '/bin/sh -c ocp-indent --help' returned a non-zero code: 127时总是失败

代码语言:javascript
复制
FROM ocaml/opam

WORKDIR /workdir

RUN opam init --auto-setup
RUN opam install --yes ocp-indent
RUN ocp-indent --help

ENTRYPOINT ["ocp-indent"]
CMD ["--help"]

我通过docker run -it <image id> bash -il运行了之前的镜像,然后运行ocp-indent --help,它运行得很好。不确定为什么它会失败,有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-23 14:15:03

这是一个与路径相关的问题和配置文件。使用sh -cbash -c时,不会加载配置文件。但是当您使用bash -lc时,它意味着加载配置文件并执行命令。现在,您的配置文件可能具有运行此命令所需的路径设置。

编辑-1\f25-1\f6

因此,原始答案的问题是它不能工作。当我们有

代码语言:javascript
复制
ENTRYPOINT ["/bin/bash", "-lc", "ocp-indent"]
CMD ["--help"]

它最终转换为/bin/bash -lc ocp-indent --help,而要让它工作,我们需要/bin/bash -lc "ocp-indent --help"。这不能直接通过在入口点中使用命令来完成。所以我们需要创建一个新的entrypoint.sh文件

代码语言:javascript
复制
#!/bin/sh -l
ocp-indent "$@"

确保在主机上使用chmod +x entrypoint.sh命令。并将Dockerfile更新为以下内容

代码语言:javascript
复制
FROM ocaml/opam

WORKDIR /workdir

RUN opam init --auto-setup
RUN opam install --yes ocp-indent
SHELL ["/bin/sh", "-lc"]
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
CMD ["--help"]

在构建和运行之后,它就可以工作了

代码语言:javascript
复制
$ docker run f76dda33092a
NAME
       ocp-indent - Automatic indentation of OCaml source files

SYNOPSIS

原始答案

您可以使用以下命令轻松地测试这两个命令之间的差异

代码语言:javascript
复制
docker run -it --entrypoint "/bin/sh" <image id> env
docker run -it --entrypoint "/bin/sh -l" <image id> env
docker run -it --entrypoint "/bin/bash" <image id> env
docker run -it --entrypoint "/bin/bash -l" <image id> env

现在,bash要么在默认情况下具有正确的路径,要么只有在使用-l标志时才会出现。在这种情况下,您可以将docker镜像的默认shell更改为

代码语言:javascript
复制
FROM ocaml/opam

WORKDIR /workdir

RUN opam init --auto-setup
RUN opam install --yes ocp-indent
SHELL ["/bin/bash", "-lc"]
RUN ocp-indent --help

ENTRYPOINT ["/bin/bash", "-lc", "ocp-indent"]
CMD ["--help"]
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46374737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档