[英]Docker ADD and COPY not honored in Dockerfile
當我嘗試構建以下 Dockerfile 時,ADD 和 COPY 步驟什么也不做:
# Use an official Apache runtime as a parent image
FROM amd64/httpd
# Set the working directory
WORKDIR /usr/local/apache2
# Copy the following contents into the container
ADD ./httpd.conf {$workdir}/conf/httpd.conf
COPY ./Projects/RavensHomeSupport/build/* {$workdir}/htdocs/Test/
# Make port 80 available to the world outside this container
EXPOSE 80
# Define environment variable
ENV NAME RavensHomeWeb
我運行以下構建命令:
docker build -t ravenshome --rm --no-cache .
當我檢查正在運行的容器中Test
目錄的內容時,沒有任何我期望的數據被復制到容器中。 構建命令的output在這里。
Sending build context to Docker daemon 1.444MB
Step 1/6 : FROM amd64/httpd
---> 19459a872194
Step 2/6 : WORKDIR /usr/local/apache2
---> Running in 192cb44f767e
Removing intermediate container 192cb44f767e
---> d9816ea17258
Step 3/6 : ADD ./httpd.conf {$workdir}/conf/
---> 19f48db970bb
Step 4/6 : COPY ./Projects/RavensHomeSupport/build/ {$workdir}/htdocs/Test/
---> d93939218c2b
Step 5/6 : EXPOSE 80
---> Running in 43b9e9297f60
Removing intermediate container 43b9e9297f60
---> 3b994be07747
Step 6/6 : ENV NAME RavensHomeWeb
---> Running in a64bccaf81c8
Removing intermediate container a64bccaf81c8
---> 9217c242868c
Successfully built 9217c242868c
Successfully tagged ravenshome:latest
我使用以下命令啟動容器:
docker run -dit -p 8080:80 --name ravenshome ravenshome
當我使用以下命令檢查容器中的問題目錄時:
docker exec ravenshome ls -a /usr/local/apache2/htdocs
我得到以下結果:
.
..
index.html
如您所見,所有內容都是默認圖像的內容,而不是我期望的附加內容。 同樣,我自定義的httpd.conf
版本也沒有復制到新容器中。 我已經閱讀了幾篇表明問題是由於使用卷引起的帖子,但我沒有這樣做,我也沒有.dockerignore
文件。 誰能看到我做錯了什么?
$workdir
不是已定義的環境變量,因此它擴展為一個空字符串。 花括號內的$variable
根本不是特殊語法; 它擴展為大括號內的變量擴展。 這樣做的最終結果是這兩行:
WORKDIR /usr/local/apache2
ADD ./httpd.conf {$workdir}/conf/httpd.conf
將內容復制到目錄/usr/local/apache2/{}/conf/http.conf
- 花括號內沒有任何內容,花括號本身被解釋為相對於當前工作目錄的目錄。
您根本不需要環境變量; 你可以只COPY
到當前的WORKDIR
WORKDIR /usr/local/apache2
ADD ./httpd.conf ./conf/httpd.conf
COPY ./Projects/RavensHomeSupport/build/* ./htdocs/Test/
有關允許的 forms,另請參見docker-compose.yml
文檔中的變量替換; 您可能正在考慮${variable}
語法(大括號外的美元)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.