2017-03-25 1 views
1

현재 개발 환경에서 파일을 변경할 때마다 자동 코드 재로드가 허용됩니다 (예 : nodemon/webpack). 그러나 나는 즉시 한 번에 3-4 관련 서비스를 열 수 있도록 kubernetes (minikube) 환경을 설정하고 있습니다.도커 컨테이너에서 내 호스트 컴퓨터로 rsync하는 방법

모든 것이 정상적으로 작동하지만 현재 자동 코드 재로드를 수행하지 않습니다. 볼륨 마운트를 시도했지만 dockervirtualbox 파일이 충돌하여 file changes from the host not reflected in docker container이되는 방식으로 충돌이 발생합니다. (이 문제와 관련된 것으로 보이는 첫 번째 링크가 아니며 다른 날에 인터넷 검색을하는 동안 발견 된 첫 번째 링크입니다 ...

어쨌든 긴 이야기가 짧아서, 개발 과정에서 실제 다시로드하는 데 문제가 있습니다. . 나는이 문제를 매우 적은 해결책으로 웹 사이트 전체에 걸쳐 발견했다. 지금까지 찾은 최고의 솔루션은 폴더 동기화에 This person used tar from the host입니다.

그러나 나는 컨테이너에서 해결책을 원합니다. 그 이유는 컨테이너에서 스크립트를 실행하여 개발자가 특정 Repo에서 개발을 시작할 때마다 호스트 컴퓨터에서 스크립트를 실행할 필요가 없기 때문입니다.

그러나 이렇게하려면 컨테이너에서 호스트 컴퓨터로 rsync를 실행해야합니다. 그리고 그 문법을 작성하는 방법을 알아내는 데 많은 어려움을 겪고 있습니다.

의 내 앱이 각각 내 컨테이너 및 호스트에 존재하는 척하자

/workspace/app # location in container 
/Users/terence/workspace/app # location in host computer 

어떻게 내가 rsync를 호스트하는 컨테이너에서? 172.17.0.17127.0.0.1을 사용하지 않으려 고 시도했습니다. 그것을 할 수있는 방법이 있는지 확실하지 않습니다.

예 나는 시도 :

호스트 (안 컨테이너 내부)에서 rsync를 실행하는 경우
rsync -av 172.17.0.17:Users/terence/workspace/app /workspace/app 
rsync -av 127.0.0.1:Users/terence/workspace/app /workspace/app 

답변

0

, 대신 docker cp을 사용할 수

예를 들어, docker cp containerName:/workspace/app Users/terence/workspace/app

이 수를 당신은 분명히 :
1. 호스트 또는 컨테이너 내부에서 rsync를 실행하고 있습니까?
컨테이너 내부에서 컨테이너가 연결된 경우 (예 : 브리지 또는 호스트) 및 마운트 된 볼륨 (예 : 컨테이너를 시작할 때 -v 플래그를 사용 했습니까?)

업데이트 : rsync가 컨테이너 내에서 작동하려면 호스트의 디렉토리를 컨테이너에 표시해야합니다. 당신이 솔루션의 생각으로

,이 점을 명심 : host dir as a data volume

을 : 호스트 디렉토리는, 그 성질에 의해, 호스트 종속. 이러한 이유로 Dockerfile에서 호스트 디렉토리를 마운트 할 수 없으며 VOLUME 명령어는 내장 이미지가 이식 가능해야하므로 host-dir 전달을 지원하지 않습니다. 가능한 모든 호스트에서 호스트 디렉토리를 사용할 수 없습니다.

+0

컨테이너에서 실행하고 싶습니다. 볼륨을 올리지 않습니다. 호스트 네트워크를 사용하고 있습니다. –

관련 문제