당신은 컨테이너에 모든 로컬 환경을 복사 할 수 있습니다 :
COPY ./package.json /app/package.json
WORKDIR /app/
RUN npm install
COPY ./src/ /app/src/
CMD ["npm","run","start"]
이 접근 방식은 말 그대로 이미지로 해당 지역의 환경을 복사합니다. 소스를 변경할 때마다 이미지를 다시 작성하고 컨테이너를 다시 시작해야합니다.
프로젝트 폴더를 컨테이너의 볼륨으로 마운트하는 것이 좋습니다. 모든 종속성이 있으며 소스/종속성을 변경할 때마다 컨테이너를 다시 시작해야합니다 (또는 컨테이너 내부의 감독자를 사용할 수도 있습니다) :
VOLUME /app/
WORKDIR /app/
CMD ["npm","run","start"]
컨테이너를 실행하는 경우 - 컨테이너에 프로젝트 디렉토리를 연결하는 기억
그리고 docker-compose.yml
파일
version: '2'
services:
app:
build: .
image: app
volumes: [".:/app/"]
이
편집 (나는 당신의 Node.js를 응용 프로그램에 대한 Dockerfile
이 소스 node_modules
및 docker-compose.yml
과 동일한 디렉토리에있는 것으로 가정) : 위의 게시 된 솔루션은 지역 발전을 위해 좋다.
복사 node_modules
지역 및 컨테이너에 모든 소스 : 당신이 dockerize 및 응용 프로그램을 배포 할 경우 두 가지 방법이 있습니다
COPY ./node_modules /app/
COPY ./src /app/
COPY ./package.json /app/
WORKDIR /app/
CMD ["npm","run","start"]
또는 내 대답의 상단에서 템플릿을 사용하는 (빌드 중에 모든 node_modules를 설치합니다 - package.json
이 변경되면이 빌드가 더 느립니다).
왜 로컬로 로컬로 개발하지 않았는지 이유를 부인하고 그것을 dockerize? – Craicerjack
해당 구성을 사용하면 컨테이너 내부의 package.json에 대한 변경 사항이 호스트에 반영되지 않습니다. 볼륨은'docker rm -v'에서 살아남지 못할 컨테이너 볼륨입니다. 아마 당신은 호스트 볼륨을 사용하려고합니까? – BMitch
@BMitch 다행스럽게도 다행스럽게도 컨테이너에서 컨테이너에서 내 변경 내용을 쉽게 볼 수 있습니다. – user1016265