2016-11-23 4 views
1

나는 Docker와 Container가 완전히 새롭다. 또한 전체 VM 개념을 처음 접했습니다.Docker 컨테이너 안의 코드를 변경하는 방법은 무엇입니까?

나는 VM과 Dockers가 응용 프로그램의 모든 종속성을 단일 구성 요소로 사용할 수 있도록하는 방법임을 이해합니다.이 구성 요소를 지원하는 클라우드에 쉽게 배포 할 수 있습니다.

내 로컬 컴퓨터 (Ubuntu)에 Docker가 설치되었고 used this guide을 사용하여 노드 공식 이미지를 다운로드하고 실행했습니다.

Docker 내부의 파일에 대해 코드를 변경하려면 어떻게해야합니까? 앱 내 'server.js'를 변경했는데 http://locahost:49160으로 이동하면 브라우저에 이전 server.js의 결과가 계속 표시됩니다. 컨테이너를 다시 시작했지만 이전 출력은 똑같습니다.

변경 사항을 적용하고 새 이미지를 만들 수 있음을 알았습니다. 그렇다면 오래된 이미지가 완전히 쓸모 없습니까?

또는 전혀 아님 Docker가 작동하는 방식을 이해하고 있습니까?

+0

나는 도커를 사용하지 않지만 컨테이너에서 내용을 변경할 때는 그대로 사용합니다. –

+0

오 .. nodejs 서버를 다시 시작하는 데 문제가 있습니까? 나는 그것을 시도했기 때문에 실패했습니다. –

답변

3

컨테이너 내부를 변경할 수 있으며 이러한 변경 사항을 원본 이미지에 적용하거나 새 이미지를 만들 수도 있습니다.

하지만 새 이미지 또는 태그를 만드는 것이 좋습니다.

guide을 검토하십시오. server.js을 변경하려면 새 이미지를 만들어야합니다. 태그 (test1)를 추가하는 것을 잊지 마십시오.

예, docker build -t <your username>/node-web-app:test1 .

은 그럼 당신은 귀하의 경우에는 docker run -p 49160:8080 -d <your username>/node-web-app:test1

+0

좋아요, 이걸 시험해보고 알려 드리겠습니다. –

+0

새 이미지 빌드가 작동합니다. 얼마나 자주 이미지를 만들어야합니까? –

+1

코드에서 편집 할 때마다 배포하고 싶습니다. – lvthillo

2

와 새 이미지를 실행할 수 있습니다. 당신은 아마 당신의 이미지를 다시해야합니다 : 당신은 당신의 이미지/컨테이너 내에서 복사하여 server.js에 편집을했다

docker build -t my-new-image . 

. 참 오래된 이미지는 쓸모 없을 것입니다. 빌드 후 docker run으로 새 컨테이너를 시작해야합니다. 당신이 자동으로 용기 내부에 업데이트됩니다 로컬 컴퓨터에 코드를 편집 할 때

은 어떤 경우에는 docker run -v my-local-volume:/volume-in container ...

로 고정 표시기 컨테이너에 코드/데이터를 장착 할 수 있습니다. 이미지를 업데이트하거나 컨테이너를 다시 시작하지 않습니다. 그러나 귀하의 경우에는 dockerfile의 COPY 명령을 사용하여 응용 프로그램 내에서 코드를 복사하십시오.

+0

매번 수동으로 코드를 작성하지 않고 코드를 계속 복사 할 수 있습니까? –

+0

nodejs가 잘 작동하지 않습니다. 하지만 '문제'는 npm 설치가 이미지 내부에서 완료되었다는 것입니다 (아마도 package.json -> server.js에 종속 됨). 그래서 어쩌면 해결책이 될 수 있다면 어쩌면 이미지 내부에서 이것을 수행하는 대신 컨테이너 시작시 nock install + npm start (코드를 마운트하는 docker)를 수행하는 startup.sh 스크립트를 작성하는 것입니다. – lvthillo

+0

좋습니다. 나는 시험하고 알릴거야. –

관련 문제