[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
이러한 방식으로 모든 것을 무시하지만 “목록 무시”에서만 복사하거나 추가 할 대상은 제외합니다.
답변이 늦었지만 더 많은 사례를 다루는 더 많은 방법을 추가했습니다.