2016-11-30 4269 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