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

2022-08-30 10:54:08

我必须通过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/

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


答案 1

从目标位置删除文件名:

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

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


答案 2

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

from debian:jessie
COPY debian_version /etc/debian_version

正如 PolarisUser 在注释中所述,您需要将其放入与 相同的文件夹中或使用 .另一种方法是在运行容器时装载文件。debian_versiondockerfileabsolute path

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

推荐