簡體   English   中英

Docker ADD 和 COPY 在 Dockerfile 中不支持

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

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