entrypoint file not found

2020-02-27 19:02发布

问题:

I have a docker image with this command:

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"]

it builds correctly but when I try to run bash, for example, I get this 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".

I tried copy the entrypoint file, give it executable permissions as well with CMD...nothing worked

回答1:

/usr/src/app may not be in your path so you should include the full path to the script. You also need to ensure that your entrypoint.sh is executable, docker will copy the permissions exactly as they are on your build host, so this step may not be needed depending on your scenario.

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:

I had the same problem - the entrypoint was not found, but I was sure that it was there.

It seems that you can't use single quotes ' for the entrypoint/command.

So I changed from

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

to

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

and it works.



回答3:

I had this problem with Docker for Windows and the solution was changing the entrypoint script file from CRLF -> LF.