[DOCKER] [NODE]: 필요할 때만 node_modules를 재구축하는 방법!
2295 단어 nodejavascripttypescriptdocker
소개:
코드를 변경할 때마다 새로운 종속성을 구현했다는 의미는 아닙니다. 프로젝트에 새 패키지를 삽입하지 않았다면
node_modules
폴더를 다시 빌드할 이유가 전혀 없습니다.Docker를 실행하는 Node 애플리케이션의 개발 및 디버깅 시간이 크게 줄어들기 때문에 효율성을 어떻게 업그레이드할 수 있는지 알아보겠습니다.
노드 Dockerfile이 일반적으로 구현되는 방식:
일반적으로 볼 수 있는 이
Dockerfile
를 빠르게 살펴보겠습니다. 이는 잘못 구현되었습니다.FROM node:16
# Create app directory
WORKDIR /usr/src/app
# Copy source
COPY . .
# Install dependencies
RUN npm install
# Run server
EXPOSE 8080
CMD [ "node", "server.js" ]
여기서 전체 효율성 문제는
COPY . .
에 있습니다.이것은 나쁘다. 이렇게 하면
.
의 파일을 변경할 때마다 모듈 폴더를 계속해서 빌드해야 합니다...수정:
대신 먼저
package.json
및 package-lock.json
파일(종속성을 제어함)을 작업 디렉토리에 복사한 다음 설치해야 합니다.이제 Dockerfile을 다음과 같이 업데이트하겠습니다.
# Copy package.json and package-lock.json
COPY package*.json ./
# Install dependencies
RUN npm install
그래야만 나머지 파일을 복사할 수 있습니다.
COPY . .
따라서 고정 Dockerfile 버전은 다음과 같습니다.
FROM node:16
# Create app directory
WORKDIR /usr/src/app
# Copy package.json and package-lock.json
COPY package*.json ./
# Install dependencies
RUN npm install
# Copy source
COPY . .
# Run server
EXPOSE 8080
CMD [ "node", "server.js" ]
설명:
Docker 캐시 레이어에 관한 모든 것입니다.
각 Docker 이미지는 일련의 레이어로 구성됩니다.
Dockerfile
의 명령은 항상 새 레이어를 생성합니다.모든 것을 하나의 레이어 안에 유지하는 대신 다른 부분에서 분리해야 합니다.
Docker는 재구축 시 기존 캐시 레이어를 사용하려고 하기 때문입니다.
그것은 간단한 설명입니다.
official documentation에서 자세한 내용을 읽을 수 있습니다.
결론:
이제
package.json
파일이 변경될 때마다 npm install
가 다시 실행됩니다. 그렇지 않으면 단순히 건너뜁니다.로그에서 이 동작을 확인할 수 있습니다.
---> Using cache
가 다시 빌드되지 않음을 나타내는 node_modules
를 찾으십시오.이 게시물이 마음에 드셨나요? ;디
그렇다면 저를 팔로우하거나 이 게시물을 즐겨찾기에 추가해 주세요!
Reference
이 문제에 관하여([DOCKER] [NODE]: 필요할 때만 node_modules를 재구축하는 방법!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/joseguilhermefmoura/docker-node-how-to-rebuild-nodemodules-only-when-its-necessary-4ke9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여([DOCKER] [NODE]: 필요할 때만 node_modules를 재구축하는 방법!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/joseguilhermefmoura/docker-node-how-to-rebuild-nodemodules-only-when-its-necessary-4ke9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)