我需要减小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

有什么帮助吗?

最佳答案

这是因为RUN cp ...COPY不同。 COPY将文件从您的主机复制到镜像,RUN在其构建过程中在容器内运行,但失败了,因为其中确实没有“此类文件或目录”。

再看COPY documentation,实际上没有一种方法可以使用一个COPY将多个文件复制到多个目标,而只能将多个源复制到一个目标。

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

关于docker - 如何通过docker RUN运行复制命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51265279/

10-16 22:41