2017-05-05 4 views
4

나는 Dockerfile을 사용하여 파일을 컨테이너에 복사 한 다음 볼륨을 만듭니다. src 폴더에서Docker가 볼륨에 파일을 추가합니다.

... 
ADD src/ /var/www/html/ 
VOLUME /var/www/html/files 
... 

는 파일 폴더와이 폴더에이 파일 나는 VOLUME에 컨테이너가 시작됩니다 처음 복사 한 필요가 일부 파일이 있습니다.

컨테이너가 처음 만들어지면 볼륨에 지정된 원래 디렉토리의 내용을 사용한다고 생각했지만 그렇지 않습니다.

어떻게이 폴더에 파일을 가져올 수 있습니까? 여분의 폴더를 만들고 그것을 runscript로 복사해야합니까? (당신이 만드는 새 컨테이너를 경우가 아닌) 당신이 당신의 Dockerfile에 넣어 무엇이든

+0

200 % 확실한 테스트를 통과해야합니다. Docker-run 또는 docker-compose에서'-v/path/to/some/directory :/var/www/... '를 사용하면 예상대로 작동하지 않는 유일한 경우입니다. –

답변

4

단지 빌드시에서 평가된다.

당신이 사용하는 컨테이너에서 사용할 수있는 호스트에서 파일을하려는 경우 data volume : 당신은 단지 당신이 할 수있는 일회성 작업으로 컨테이너에 호스트에서 파일을 복사 할 경우

docker run -v /host_dir:/container_dir ... 

사용 :

docker cp /host_dir mycontainer:/container_dir 
+0

폴더에 초기 파일이 있으므로 빌드시 파일을 추가하고 싶습니다. 하지만이 폴더를 데이터 볼륨을 통해 내 호스트에서 사용할 수있게하려고합니다. 따라서 초기 파일은 데이터 볼륨에 저장해야합니다. 컨테이너의 시작 스크립트를 통해 파일을 복사 할 수 있지만 좀 더 우아한 해결책이 있기를 바랍니다. 그렇지 않다면 나는 대본을 통해 그것을 할 것이다. –

1

문제는 ADD 문과 함께 발생합니다. 또한 볼륨에 액세스하는 방법을 이해하지 못할 수도 있습니다. 아래의 데모와 노력을 비교 :

FROM alpine #, or your favorite tiny image 
ADD src/files /var/www/html/files 
VOLUME /var/www/html/files 

'dataimg'라는 이미지 구축 :

docker run --name datacon dataimg /bin/cat 
:

docker build -t dataimg . 

가 'DATACON'라는 이름의 데이터 컨테이너를 만들 dataimg의 이미지를 사용을

nginx 컨테이너의 datacon에서 볼륨 마운트 :

docker run --volumes-from datacon nginx ls -la /var/www/html/files 

그리고/var/www/html/files의 목록은 src/파일의 내용을 반영합니다.

관련 문제