2017-11-26 2 views
1

特定のNodeバージョンをダウンロードし、抽出されたtar.xzからバイナリをコピーしようとしていますが、ADDが実際にファイルを抽出するようには見えません。Docker ADDがファイルを抽出しない

これは私のDockerfileです:

FROM arm32v7/debian:stretch-slim 

ENV nodever="v6.10.0" 
ADD https://nodejs.org/dist/${nodever}/node-${nodever}-linux-armv7l.tar.xz/
COPY /node-${nodever}-linux-armv7l/bin/node/

RUN cat /etc/issue && \ 
\ 
apk update && \ 
apk add \ 
    dnsmasq \ 
    hostapd \ 
    iptables 

RUN mkdir app 
ADD start.sh /app/start.sh 
ADD server /app/server 

ADD configs/hostapd.conf /etc/hostapd.conf 
ADD configs/dnsmasq.conf /etc/dnsmasq.conf 

WORKDIR /app 
CMD ["/app/start.sh"] 

が、docker -v buildを実行すると、このエラーが得られます。

Sending build context to Docker daemon 9.728kB 
Step 1/12 : FROM arm32v7/debian:stretch-slim 

---> 1510cdc40eca 
Step 2/12 : ENV nodever "v6.10.0" 

---> Using cache 
---> 1ca3d2f72a3c 
Step 3/12 : ADD https://nodejs.org/dist/${nodever}/node-${nodever}-linux-armv7l.tar.xz/
Downloading 8.34MB/8.34MB 

---> a1fefb9bda66 
Step 4/12 : COPY /node-${nodever}-linux-armv7l/bin/node/
COPY failed: stat /var/lib/docker/tmp/docker-builder233292954/node-v6.10.0-linux-armv7l/bin/node: no such file or directory 

私はそれがアーカイブをダウンロードしたが、それが抽出されていないことを示しているRUN ls /を実行しようとしました。

答えて

0

これはdocumented次のとおりです。

If is a local tar archive in a recognized compression format (identity, gzip, bzip2 or xz) then it is unpacked as a directory.

は、 "ローカル" に重点を注意してください。

これは実際には変更されており、ある時点でrevertedに変更されている可能性があります。

+0

ああ私の悪い、ありがとう!私はそれが正しいと思ったので、例からDockerfileの少しを取ったが、変更が元に戻る前におそらく作られた。 –

+0

ダウンロードしたアーカイブを抽出するために2番目の 'ADD'を追加しましたが、今度は' ADD'がアーカイブを見つけられません。私は正直なところ、Dockerfilesをデバッグするのは難しいです。 –

+0

ビルド・コンテキスト(DockerビルダーによってDockerデーモンに送信され、DockerビルダーへのPATH/URL引数によって参照されるもの)からファイルを転送するために、 'ADD'および' COPY'が使用されます。ビルド(1))と、関連するステップでコミットする中間コンテナ。そのため、ビルド手順(Dockerfile)の外にあるアーカイブをコンテキストにダウンロードし、イメージに 'ADD'するか、' RUN'ステップを使って*と*をダウンロードします(例:curl | xz | tar )を作成します。あなたが概説したシナリオのための2つの 'ADD'ステップは決してありません。 – tne

関連する問題