[英]COPY and ADD not working in Dockerfile
我們有一個dockerfile作為
FROM bitnami/tomcat
EXPOSE 8080
EXPOSE 8009
ADD values.war /opt/bitnami/tomcat/data/
除了values.war文件似乎永遠不會被添加,當我們
docker exec -it values /bin/bash
並檢查/opt/bitnami/tomcat/data/
目錄中是否未復制war文件。
但是我們嘗試了以下操作,當我們連接到docker容器時,文件被復制了
FROM bitnami/tomcat
EXPOSE 8080
EXPOSE 8009
RUN mkdir -p /var/app
ADD values.war /var/app
因此,我們認為問題出在目錄中,因此我們嘗試了以下方法
FROM bitnami/tomcat
EXPOSE 8080
EXPOSE 8009
RUN ls -l /opt/bitnami/tomcat/data/
這給了輸出
ls: cannot access /opt/bitnami/tomcat/data/: No such file or directory
在構建圖像時
我們認為問題是因為FROM
映像bitnami/tomcat
將該目錄用作卷等。 這可能是原始bitnami / tomcat圖像的代碼,盡管我們不確定。
https://github.com/bitnami/bitnami-docker-tomcat/blob/master/9.0/Dockerfile
有關如何將文件添加到tomcat目錄的任何想法
來自Bitnami的Sameer。
確實存在於Dockerfile
定義的VOLUME問題。 我們認為這是我們的Dockerfile中的缺陷,我們正在努力解決所有Dockerfiles中的這個問題。
這是在Dockerfile中定義卷的缺點之一,也是我不建議在那里定義它的原因之一。 當您在構建期間嘗試修改卷中的文件時,未定義docker的行為,這可能取決於您的docker版本或其他外部變量,因此為了便於攜帶,最好不要這樣做。
由於你正在處理來自另一方的圖像,我會向他們提出一個問題,以便刪除該行(請隨時將它們指向我的博客文章以獲得解釋)。 在此之前,您可以從github檢出他們的構建文件,並更改Dockerfile以構建您自己的基本映像版本。
作為參考,這里是關於從Docker文檔定義Dockerfile中的卷的一個注釋(比如說快3倍):
從Dockerfile中更改卷:如果任何構建步驟在聲明后更改卷內的數據,那么這些更改將被丟棄。
只想告訴您Bitnami Docker鏡像不再在Dockerfile中聲明VOLUME
,這樣我們的用戶就可以更輕松地擴展和自定義docker鏡像。 希望您發現此更改有幫助。
如果您有任何其他問題,請訪問我們的堆棧社區http://slack.oss.bitnami.com/ 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.