2016-11-30 52 views
3

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

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

,但我有错误:File already exists

我也曾尝试使用下面的命令

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

,但该文件不是在容器运行时复制,有没有关于这方面的任何建议?

回答

9

从目的地删除该文件名:

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

目的地是绝对路径(未文件名),或相对于工作目录的路径,到其中的源将被复制在目标容器内。

3

我刚刚测试了下面的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> 
+0

只要确保有在同一地点的Dockerfile是debian_version。尽管如此,这是正确的答案。 – PolarisUser

2
docker cp "yourfilename" "containername":/destination 

下面是一个工作示例:

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