找不到入口点文件

新手上路,请多包涵

我有一个带有这个命令的 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 …没有任何效果

原文由 Luiz E. 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 420
2 个回答

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

原文由 BMitch 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

原文由 dsschneidermann 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题