在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
命令可以正常工作,表明文件确实存在于图像中。
答案 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)