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 /
を実行しようとしました。
ああ私の悪い、ありがとう!私はそれが正しいと思ったので、例からDockerfileの少しを取ったが、変更が元に戻る前におそらく作られた。 –
ダウンロードしたアーカイブを抽出するために2番目の 'ADD'を追加しましたが、今度は' ADD'がアーカイブを見つけられません。私は正直なところ、Dockerfilesをデバッグするのは難しいです。 –
ビルド・コンテキスト(DockerビルダーによってDockerデーモンに送信され、DockerビルダーへのPATH/URL引数によって参照されるもの)からファイルを転送するために、 'ADD'および' COPY'が使用されます。ビルド(1))と、関連するステップでコミットする中間コンテナ。そのため、ビルド手順(Dockerfile)の外にあるアーカイブをコンテキストにダウンロードし、イメージに 'ADD'するか、' RUN'ステップを使って*と*をダウンロードします(例:curl | xz | tar )を作成します。あなたが概説したシナリオのための2つの 'ADD'ステップは決してありません。 – tne