Search code examples
dockerdockerfile

entrypoint file not found


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


Solution

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