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

Cir*_*zzo 18 php apache docker dockerfile

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

COPY php5-cgi.conf /etc/apache2/conf-enabled/php5-cgi.conf
Run Code Online (Sandbox Code Playgroud)

但我有错误: File already exists

我也尝试使用以下命令

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

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

Jay*_*ard 24

从目标中删除文件名:

COPY php5-cgi.conf /etc/apache2/conf-enabled/
Run Code Online (Sandbox Code Playgroud)

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

  • 我宁愿惊恐地引用“到其中”。 (3认同)

Vol*_*yer 9

docker cp "yourfilename" "containername":/destination
Run Code Online (Sandbox Code Playgroud)

下面是一个工作示例:

docker cp config.json bigdataapp:/app/src/bigdatapp/wwwroot/assets/config/config.json
Run Code Online (Sandbox Code Playgroud)


Far*_*ahi 6

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

from debian:jessie
COPY debian_version /etc/debian_version
Run Code Online (Sandbox Code Playgroud)

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

docker run -d -v php5-cgi.conf:/etc/apache2/conf-enabled/php5-cgi.conf --name your_container_name <imagename:tag> <startup command>
Run Code Online (Sandbox Code Playgroud)