[DOCKER] [NODE]: 필요에 따라 node_modules를 '빌드'해야 합니다!

소개:



Nem todas as vezes que mudamos nosso código, isso significa que nós implementamos novas dependsências: se não inserimos nenhum pacote novo no nosso projeto, então não há motivo algum para reconstruir (rebuild) a 파스타node_modules .

또한 vamos entender는 더 나은 성능을 얻기 위해 디버깅 속도를 늦추고 애플리케이션을 desenvolvimento합니다. 노드 로드 및 도커는 중요한 작업을 다시 시작합니다.

Como Node Dockerfiles는 다음과 같이 정상적으로 구현됩니다.



Vamos olhar rapidinho esseDockerfile que está mal implementado.

FROM node:16

# Cria diretório do aplicativo
WORKDIR /usr/src/app

# Copia o código inteiro
COPY . .

# Instala as dependências
RUN npm install

# Roda o servidor
EXPOSE 8080
CMD [ "node", "server.js" ]


Todo o problema de eficiência aqui 거주지
나린하COPY . . .

Isso é ruim, pois fazer isso significa que: todas as vezes que você fizer uma mudança no código presente em . , 파스타 node_modules terá que ser reconstruída, de novo e de novo e de novo...

아루만도 이소:



Ao invés disso, nós devemos primeiramente copiar apenas nosso arquivo package.json e package-lock.json (que controlam nossas dependsências) para o diretório do aplicativo e então instalar elas.

Então, vamos atualizar nossoDockerfile para:

# Copia package.json e package-lock.json
COPY package*.json ./

# Instala as dependências
RUN npm install


E só então, copyiamos o resto dos nossos arquivos:

COPY . .


이제 Dockerfile을 사용할 수 있는 버전은 다음과 같습니다.

FROM node:16

# Cria diretório do aplicativo
WORKDIR /usr/src/app

# Copia package.json e package-lock.json
COPY package*.json ./

# Instala as dependências
RUN npm install

# Copiamos o resto dos arquivos
COPY . .

# Roda o servidor
EXPOSE 8080
CMD [ "node", "server.js" ]


설명:



É tudo sobre camadas cacheadas do Docker, ou Docker cached layer.

Cada imagem do Docker는 uma série de camadas로 구성됩니다.

Comandos no seu Dockerfile gerar novas camadas.

Ao invés de manter tudo dentro de uma só camada, nós devemos quebrar em partes diferentes.

Pois o Docker semper vai tentar usar uma camada que já existe, ao invés de criar uma nova, se for possível.

Essa é a explicação simples e rápida.
Você pode ler mais detalhes na documentação oficial .

결론:



Agora, toda vez que modificarmos a package.json , o comando npm install será executado novamente.
Modifiquemos에 대한 수정 사항이 없으면 단순히 무시할 수 있습니다.

Você pode verificar esse comportamento no log da imagem, procurando por ---> Using cache, que indica que a 파스타 node_modules não está sendo reconstruída.

게시물을 게시합니까? :디



Se você gostou, por favor me seguir ou favoritar esse post!

좋은 웹페이지 즐겨찾기