ADD 명령을 사용하여 Docker의 다른 디렉토리로 디렉토리 복사


382

http://docs.docker.com/engine/reference/builder/#add를 읽었 지만 문제가 발생했습니다. 로컬 디렉토리 go를 docker 에 복사하고 싶습니다./user/local/

나는 시도했다 :

ADD go /usr/local/

과:

ADD /go/ /usr/local/ 

또한:

RUN chmod 0755 /usr/local/go/src/make.bash

그러나 다음과 같은 오류 메시지가 표시 /usr/local/go/src/make.bash: No such file or directory되지만 로컬 go디렉토리에는가 포함되어 있습니다 make.bash.

답변:


704
ADD go /usr/local/

도커 이미지 의 디렉토리에 로컬 디렉토리 의 내용 을 복사합니다 .go/usr/local/

사용중인 go디렉토리 자체 를 복사하려면 다음을 수행하십시오 /usr/local/.

ADD go /usr/local/go

또는

COPY go /usr/local/go

43
여러 소스 버전의 ADD를 사용하려고하는데 대상의 대상 디렉토리 이름을 지정할 수 없습니다. OP가 다중 src 형식으로 요청한 방식을 수행 할 수있는 방법이 있습니까 (즉 ADD, 각 소스 디렉토리에 대한 계층을 만들지 않음)?
거스

9
난 그냥 말하는하여이에 (!) 참고를 추가 할 $HOME이나 ~또는 다른 쉘 변수가 작동하지 않습니다. 나는 그것이 가장 눈에 띄게 명백하더라도 인정하고 싶은 것보다 이것을 알아 내려고 노력하기 때문에 이것을 말하고 있습니다.
shriek

34
COPY go / usr / local / go가 작동하지 않습니다. 복사하지 않습니다.
Tyguy7

78
이것은 정말 혼란스러운 문제입니다. 왜 그렇게 COPY간단하게 행동 할 수 cp없습니까? 대신에 경찰이 작동하는 방식에 대한 추가 경찰이 필요합니다.
Zelphir Kaltstahl

14
.dockerignore 파일은 디렉토리를 숨길 수 있으며 COPY 또는 ADD는 나열된 항목에 대해 작동하지 않습니다
Vereb

49

실제로 ADD go /usr/local/추가 할 내용go폴더가 아닌 폴더 자체, 당신은 Thomasleveil 솔루션을 사용하거나 그 어떤 이유로 일을하지 않았 으면 변경할 수 있습니다 WORKDIR/usr/local/다음처럼에 디렉토리를 추가 :

WORKDIR /usr/local/
COPY go go/

또는

WORKDIR /usr/local/go
COPY go ./

그러나 여러 폴더 를 추가하려는 경우 폴더 를 추가 하는 것이 성 가실 것입니다. 현재 문제에서 볼 수있는 유일한 해결책은에서 COPY . .원하지 않는 모든 디렉토리와 파일을 사용 하고 제외하는 .dockerignore것입니다. 폴더와 파일이 있다고 가정 해 봅시다. :

- src 
- tmp 
- dist 
- assets 
- go 
- justforfun 
- node_modules 
- scripts 
- .dockerignore 
- Dockerfile 
- headache.lock 
- package.json 

그리고 나는 그것을 추가하고 싶다 src assets package.json justforfun go:

Dockerfile에서 :

FROM galaxy:latest

WORKDIR /usr/local/
COPY . .

.dockerignore 파일에서 :

node_modules
headache.lock
tmp
dist

또는 더 재미있게 (또는 더 많은 사람들이 혼란을 느끼고 고통을 느끼게하려면 : P)

*
!src 
!assets 
!go 
!justforfun 
!scripts 
!package.json 

이러한 방식으로 모든 것을 무시하지만 "목록 무시"에서만 복사하거나 추가 할 대상은 제외합니다.

답변이 늦었지만 더 많은 사례를 다루는 더 많은 방법을 추가했습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.