Lui*_* E. 15 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"]
Run Code Online (Sandbox Code Playgroud)
它正确构建但是当我尝试运行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......没有任何效果
zar*_*tra 22
我有同样的问题 - 找不到入口点,但我确信它就在那里.
看来你不能使用单引号'作为入口/命令.
所以我改变了
ENTRYPOINT ['/foo/bar/script.sh']
CMD ['run']
Run Code Online (Sandbox Code Playgroud)
至
ENTRYPOINT ["/foo/bar/script.sh"]
CMD ["run"]
Run Code Online (Sandbox Code Playgroud)
它的工作原理.
小智 14
问题的另一个来源可能是你的 shebang,如果你/bin/bash的镜像/基础镜像中有 bash,但没有,它会告诉你没有找到你的入口点。这是我遇到的问题之一。
小智 12
就我而言,我有一个错误:
> [27/35] RUN /entrypoint.sh:
#31 0.503 /bin/sh: 1: /entrypoint.sh: not found
Run Code Online (Sandbox Code Playgroud)
我只是运行 dos2unix 命令,问题就消失了:
dos2unix entrypoint.sh
Run Code Online (Sandbox Code Playgroud)
/ 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"]
Run Code Online (Sandbox Code Playgroud)
小智 6
我在Docker for Windows上遇到了这个问题,解决方案是从CRLF-> LF更改入口点脚本文件。
| 归档时间: |
|
| 查看次数: |
20765 次 |
| 最近记录: |