【问题标题】:Dockerfile CMD unable to locate entrypoint fileDockerfile CMD 无法找到入口点文件
【发布时间】:2020-11-11 01:04:17
【问题描述】:

我有一个以

结尾的 dockerfile
COPY ./entrypoint.sh /usr/local/bin
RUN chmod +x /usr/local/bin/entrypoint.sh

CMD /usr/local/bin/entrypoint.sh

但是在构建图像之后,当我尝试运行它时,我得到了

/bin/sh: /usr/local/bin/entrypoint.sh: not found


如果我将最后一行更改为

CMD ls -l /usr/local/bin/

当我运行图像时,我得到了输出

-rwxr-xr-x    1 root     root           484 Jul 21 13:07 entrypoint.sh

这表明entrypoint.sh文件实际上在目录中。 当我在运行后使用docker export导出容器的文件系统时,也可以在/usr/local/bin/中找到entrypoint.sh文件

我不确定是什么原因导致找不到 entrypoint.sh 文件,非常感谢任何帮助。

【问题讨论】:

  • 您在使用 Docker for Windows 吗?当您将文件从 Windows 主机复制到容器时,这可能是由于 CRLF 换行符而不是 LF 造成的。
  • 另外,您用于 Dockerfile 的基本映像是什么?
  • 能显示entrypoint.sh的内容吗?
  • @octagon_octopus 啊,是的,我使用的是 Windows,转换为 LF 换行符解决了这个问题。非常感谢!!

标签: docker dockerfile


【解决方案1】:

我不确定你想用你的容器做什么,但你有没有试过在你的 Dockerfile 中将 CMD 换成 ENTRYPOINT?

另一件值得尝试的事情是指定要使用 shell 运行文件

CMD ["/bin/sh", "/usr/local/bin/entrypoint.sh"]

我建议看看this

【讨论】:

    【解决方案2】:

    我是用windows写entrypoint.sh文件的。

    正如 octagon_octopus 所建议的,将 entrypoint.sh 文件的换行符从 CRLF 更改为 LF 解决了这个问题!

    【讨论】:

      猜你喜欢
      • 2016-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      • 1970-01-01
      • 2015-08-19
      • 2017-10-22
      相关资源
      最近更新 更多