簡體   English   中英

COPY和ADD在Dockerfile中不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM