【问题标题】:Dockerfile's RUN command doesn't find scriptDockerfile 的 RUN 命令找不到脚本
【发布时间】:2018-06-12 22:12:40
【问题描述】:

在 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 命令确实有效,但表明该文件确实存在于映像中。

【问题讨论】:

    标签: docker dockerfile docker-toolbox


    【解决方案1】:

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

    问题是由错误的文件结尾引起的。 Git 被设置为将项目文件转换为 Windows (CRLF) 文件结尾。我使用设置“按原样签出,提交 Unix 样式”重新安装了 Git,删除并重新克隆了存储库,它解决了问题。

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

    【讨论】:

    • 好收获!发现得好。 +1
    【解决方案2】:

    尝试将这些RUN 命令分组:

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

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

    您也可以尝试第二次 RUN:

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

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

    【讨论】:

    • 我都试过了,但是没有用。这个问题似乎用 sh 解决了。
    猜你喜欢
    • 2015-08-19
    • 2019-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 2015-02-21
    • 2023-04-11
    • 1970-01-01
    相关资源
    最近更新 更多