Docker ADD 不提取文件

Nat*_*ins 7 docker dockerfile

我正在尝试下载特定的 Node 版本并从提取的 tar.xz 中复制二进制文件,但它看起来并没有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"]
Run Code Online (Sandbox Code Playgroud)

但运行会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 Code Online (Sandbox Code Playgroud)

我试过运行RUN ls /,这表明它已经下载了存档,但没有提取出来。

tne*_*tne 7

这是记录在案

如果是采用可识别压缩格式(identity、gzip、bzip2 或 xz)的本地tar 存档,则将其解压缩为目录。

请注意对“本地”的强调。

这实际上在某个时候被改变和恢复,所以这不太可能再次改变。

  • `ADD` 和 `COPY` 用于从构建上下文(由 Docker 构建器发送到 Docker 守护程序的内容,由 docker-build(1) 的 PATH/URL 参数引用)和要提交的中间容器传输文件在相关步骤。因此,要么您在构建过程(Dockerfile)之外下载存档并进入上下文,然后将其`添加`到图像中,或者您下载*并*使用`RUN`步骤提取存档(例如 curl | xz | tar ) 在构建过程中。对于您概述的场景,您永远不会有两个“添加”步骤。 (2认同)