如何通过Docker容器中的Dockerfile覆盖文件?

时间:2016-11-30 18:42:32

标签: php apache docker dockerfile

我必须通过Dockerfile覆盖文件。特别是在使用Apache和PHP的Ubuntu容器上,我必须覆盖php5-cgi.conf文件。 我尝试使用以下命令:

COPY php5-cgi.conf /etc/apache2/conf-enabled/php5-cgi.conf

但我收到了错误:File already exists

我也试过使用以下命令

RUN cp -f php5-cgi.conf /etc/apache2/conf-enabled/

但是当容器运行时不会复制文件,对此有任何建议吗?

3 个答案:

答案 0 :(得分:19)

从目标中删除文件名:

COPY php5-cgi.conf /etc/apache2/conf-enabled/

目标是 绝对路径 (不是文件名),或者是相对于工作目录的路径,源将在目标容器中复制到该路径中。< / p>

答案 1 :(得分:6)

我刚刚测试了以下docker文件,没有问题。

from debian:jessie
COPY debian_version /etc/debian_version

正如PolarisUser在评论中所述,您需要将debian_version放在与dockerfile相同的文件夹中,或使用absolute path。 另一种方法是在运行容器时挂载文件。

docker run -d -v php5-cgi.conf:/etc/apache2/conf-enabled/php5-cgi.conf --name your_container_name <imagename:tag> <startup command>

答案 2 :(得分:3)

docker cp "yourfilename" "containername":/destination

以下是一个工作示例:

docker cp config.json bigdataapp:/app/src/bigdatapp/wwwroot/assets/config/config.json