我需要减小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
有帮助吗?
答案 0 :(得分:3)
这是因为RUN cp ...
与COPY
不同。 COPY
将文件从您的主机机器复制到映像,RUN
在容器的构建过程中在容器内 运行,但失败,因为确实存在“那里没有这样的文件或目录。
看着COPY documentation,确实没有一种方法可以将多个文件通过一个COPY
复制到多个目标,而只能将多个源复制到一个目标。
如果确实需要,您可能可以做的是首先将所有内容COPY
到一个目录,例如/tmp
,然后使用RUN cp /tmp/rdkafka.ini /etc/php/7.0/mods-available/ && ...
。