如何通过docker RUN运行复制命令

时间:2018-07-10 12:30:45

标签: docker dockerfile

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

有帮助吗?

1 个答案:

答案 0 :(得分:3)

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

看着COPY documentation,确实没有一种方法可以将多个文件通过一个COPY复制到多个目标,而只能将多个源复制到一个目标。

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