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

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.



답변

ADD go /usr/local/

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

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

ADD go /usr/local/go

또는

COPY go /usr/local/go


답변

실제로 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

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

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


답변

COPY를 사용할 수 있습니다. 디렉토리를 명시 적으로 지정해야합니다. 자체적으로 생성되지 않습니다

COPY go /usr/local/go

참조 : Docker CP 참조


답변