2017-11-26 7 views
1

특정 노드 버전을 다운로드하고 추출 된 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

방금 ​​다운로드 한 아카이브를 추출하기 위해 두 번째'ADD'를 추가했지만 이제는 'ADD'가 아카이브를 찾지 못합니다.? 솔직히 말해서 Dockerfiles를 디버그하기가 어렵습니다. –

+0

빌드 컨텍스트 (Docker 빌더에 의해 Docker 데몬으로 보내지는 파일, Docker 빌더의 PATH/URL 인수로 참조 된 파일)를 전송할 때'ADD'와'COPY'가 사용됩니다. build (1)) 및 관련 단계에서 커밋 될 중개 컨테이너가 있어야합니다. 따라서 빌드 절차 (Dockerfile) 외부에서 컨텍스트로 압축 파일을 다운로드 한 다음 이미지에 '추가'하거나 'RUN'단계 (예 : curl | xz | tar)를 사용하여 아카이브를 * and * 압축 해제합니다.). 윤곽을 잡는 시나리오에 대해 두 가지 '추가'단계를 거치지 마십시오. – tne