找不到入口点文件

时间:2017-06-09 14:51:38

标签: docker dockerfile

我有一个使用此命令的docker镜像:

FROM ruby:2.4-alpine
WORKDIR /usr/src/app

COPY Gemfile /usr/src/app/Gemfile
COPY Gemfile.lock /usr/src/app/Gemfile.lock

RUN bundle config build.nokogiri --use-system-libraries
RUN bundle install --without development test

VOLUME /state

COPY . /usr/src/app/

ENTRYPOINT ["api-entrypoint.sh"]
CMD ["foreman", "start"]

它正确构建但是当我尝试运行bash时,例如,我得到了这个 container_linux.go:247: starting container process caused "exec: \"api-entrypoint.sh\": executable file not found in $PATH" docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: \"api-entrypoint.sh\": executable file not found in $PATH".

我尝试复制入口点文件,并为CMD提供可执行权限......没有任何效果

4 个答案:

答案 0 :(得分:14)

我遇到了同样的问题 - 找不到入口点,但我确信它 那里。

您似乎无法使用单引号'作为入口/命令。

所以我改变了

ENTRYPOINT ['/foo/bar/script.sh']
CMD ['run']

ENTRYPOINT ["/foo/bar/script.sh"]
CMD ["run"]

它有效。

答案 1 :(得分:6)

/ usr / src / app可能不在您的路径中,因此您应该包含脚本的完整路径。您还需要确保您的entrypoint.sh是可执行的,docker将完全按照它们在构建主机上的权限进行复制,因此根据您的方案可能不需要此步骤。

FROM ruby:2.4-alpine
WORKDIR /usr/src/app

COPY Gemfile /usr/src/app/Gemfile
COPY Gemfile.lock /usr/src/app/Gemfile.lock

RUN bundle config build.nokogiri --use-system-libraries
RUN bundle install --without development test

VOLUME /state

COPY . /usr/src/app/
RUN chmod 755 api-entrypoint.sh

ENTRYPOINT ["/usr/src/app/api-entrypoint.sh"]
CMD ["foreman", "start"]

答案 2 :(得分:1)

我在Docker for Windows上遇到了这个问题,解决方案是从CRLF-> LF更改入口点脚本文件。

答案 3 :(得分:0)

就我而言,我有一个错误:

select *
  from table1
 where dbms_lob.instr (t1, -- the blob column of table
                   utl_raw.cast_to_raw ('Hello'), -- the search string 
                   1, -- starting pointoffset
                   1 -- the which occurance 
                 ) > 0; -- location of text

我只运行了 dos2unix 命令,问题就消失了:

> [27/35] RUN /entrypoint.sh:
#31 0.503 /bin/sh: 1: /entrypoint.sh: not found