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