-2

我正在制作一个反应 js 项目,我正在使用 docker。随着 ubuntu 重新启动,所有依赖项再次开始下载。我无法理解为什么依赖项没有保存在项目文件夹中。我不希望每次我的依赖项在重新启动时一次又一次地下载。

每次都在数据库上拉取:在 docker 中启动

最新:从库/mysql 中提取

aa18ad1a0d33: Pull complete fdb8d83dece3: Pull complete 75b6ce7b50d3: Pull complete ed1d0a3a64e4: Pull complete 8eb36a82c85b: Pull complete 41be6f1a1c40: Pull complete 0e1b414eac71: Pull complete 914c28654a91: Pull complete 587693eb988c: Pull complete b183c3585729: Pull complete 315e21657aa4: Pull complete

摘要:sha256:0dc3dacb751ef46a6647234abdec2d47400f0

4

1 回答 1

1

Docker 有一种将内容存储在缓存中的方法:它检查 Dockerfile 的每一行指令中的修改,当它发现一行有差异时,它会重新运行它以及下面的所有指令。对于COPY指令,它的工作原理相同,除了它还检查文件本身是否已更改。
我假设您在将依赖项安装到 Dockerfile之前复制项目文件。
您应该package.json先复制您的文件,然后安装依赖项,然后复制所有项目的文件。这样,只有当您的package.json文件发生更改时,它才会下载新的依赖项。
这是我的意思的一个例子:

FROM node:latest
COPY package.json .
RUN npm install
COPY . .
EXEC npm run
于 2019-10-31T07:37:58.367 回答