簡體   English   中英

使用全局 npm 包而不是再次安裝它

[英]Use global npm package instead of installing it again

當我們運行npm i時,有什么方法可以使用全局安裝的包而不是安裝相同的包。 我有以下上下文:我已經創建了一個已經安裝了一個包的 docker 鏡像(Dockerfile 中的 install 語句)。 當我使用具有 javascript 項目的 volumen 運行容器並運行npm i時,似乎再次安裝了包。

是否可以使用全局包而不是再次安裝它?

如果你不想在 docker 構建 node_modules 期間再次安裝,你可以使用你的 node_modules 創建一個基礎鏡像。

FROM node:18-alpine3.16
WORKDIR /usr/src/app
COPY package*  ./
RUN  npm install 
docker build -t myimage .

您可以標記並將其推送到注冊表 (dockerhub) 或在本地將其用作新的基礎映像。

FROM myimage
WORKDIR /usr/src/app #Here are now already your node_modules
COPY . .  # copy your code inside the image, or map the folder if you are in 
          # development

RUN npm run build # if you need a build
CMD ["mycommand","myargument"]

請注意這一點,但如果添加或更新節點模塊,則需要重建基礎映像。

還可以考慮使用 npm ci 而不是 npm install。 這樣,每次重新安裝節點模塊時,您都可以保留相同版本的節點模塊。

處理節點模塊和基礎鏡像的安全問題。

運行docker scan myimage ,定期獲取您的 node_modules 或基礎圖像需要更新的信息。

在開發過程中,將您的代碼文件夾映射到 docker 映像絕對沒問題。 開發時甚至不需要在映像中復制您的代碼。 只需將其映射到您的 WORKDIR 中即可。

經過研究,似乎以下代碼解決了我的問題

WORKDIR /dir

RUN npm install package
RUN npm cache add package
RUN rm -rf *

WORKDIR /  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM