【问题标题】:How to run copy command via docker RUN如何通过 docker RUN 运行复制命令
【发布时间】:2018-12-18 07:15:31
【问题描述】:

我需要减小 Docker 映像大小,因此我需要将所有复制文件命令运行到单个 shell 命令 这是我的 Docker 文件复制命令

COPY rdkafka.ini /etc/php/7.0/mods-available/
COPY 20-rdkafka.ini /etc/php/7.0/apache2/conf.d/
COPY apache2.conf /etc/apache2/
COPY php.ini /etc/php/7.0/apache2/

进入单个命令

RUN cp rdkafka.ini /etc/php/7.0/mods-available/ && cp 20-rdkafka.ini /etc/php/7.0/apache2/conf.d/ && apache2.conf /etc/apache2/ && php.ini /etc/php/7.0/apache2/

我收到了这个错误

cp: cannot stat 'rdkafka.ini': No such file or directory

有什么帮助吗?

【问题讨论】:

    标签: docker dockerfile


    【解决方案1】:

    这是因为RUN cp ...COPY 不同。 COPY 将文件从您的 主机 机器复制到映像,RUN 在其构建过程中运行 inside 容器,但由于确实存在“没有这样的文件或目录”。

    看看COPY documentation,真的没有办法用一个COPY将多个文件复制到多个目标,只能将多个源复制到一个目标。

    如果你真的想要,你可能可以做的是,首先将COPY 的所有内容放到一个目录中,例如/tmp,然后使用RUN cp /tmp/rdkafka.ini /etc/php/7.0/mods-available/ && ...

    【讨论】:

    • 谢谢提姆。我会试试你的建议
    • @teemu-risikko 尝试了同样的方法,但没有运气。我收到错误 cp: cannot stat No such file or directory。我首先复制了所有文件,然后在 RUN 中运行 cp。
    猜你喜欢
    • 2021-09-30
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    相关资源
    最近更新 更多