Dockerfile的RUN命令找不到脚本

时间:2018-06-12 22:12:41

标签: docker dockerfile docker-toolbox

在Windows 10上使用Docker Toolbox,Docker无法从我的Dockerfile构建图像,因为它找不到复制到图像的脚本(install-composer)。

FROM php:7.2.5-apache

COPY scripts/install-composer /usr/bin
RUN chmod +x /usr/bin/install-composer
RUN /usr/bin/install-composer

在重新命名最后一个RUN命令时,我得到的错误是:

/bin/sh: 1: /usr/bin/install-composer: not found

chmod命令可以正常工作,表明文件确实存在于图像中。

2 个答案:

答案 0 :(得分:1)

一个非常简单的问题,但是一个非常误导的错误。

问题是由错误的文件结尾引起的。设置Git是为了将项目文件转换为Windows(CRLF)文件结尾。我重新安装了Git,设置" Checkout as-is,提交Unix风格",删除并重新克隆存储库,它解决了问题。

当谈到解释误导性和令人困惑的错误消息时,我的猜测是实际找到并执行了文件install-composer。它实际上说的是找不到。这个空名称只是两个CR之间的LF(换句话说,一个空行),sh将其解释为对脚本文件的调用。

答案 1 :(得分:0)

尝试并对这些RUN命令进行分组:

RUN chmod +x /usr/bin/install-composer && \
    ls -alrth /usr/bin/install* && \
    /usr/bin/install-composer

这样,您将看到文件是否确实被复制并存在。

您也可以尝试第二次运行:

RUN /bin/bash -c "/usr/bin/install"

(假设您的脚本使用了bash,并且您的图像中安装了bash)