【发布时间】:2020-09-04 16:36:30
【问题描述】:
背景:
- 我在
node.js中编写代码,使用npm和docker。我正在尝试让我的 docker 文件在构建时使用缓存,因此不会花费太长时间。 - 我们有一个“通用”存储库,用于保存各种存储库中使用的逻辑,并通过 npm 包进行传播。
问题:
我希望 docker 文件不使用我的“通用”包上的缓存。
Docker 文件:
FROM node:12-alpine as X
RUN npm i npm@latest -g
RUN mkdir /app && chown node:node /app
WORKDIR /app
RUN apk add --no-cache python3 make g++ tini \
&& apk add --update tzdata
USER node
COPY package*.json ./
COPY .npmrc .npmrc
RUN npm install --no-optional && npm cache clean --force
ENV PATH /app/node_modules/.bin:$PATH
COPY . .
package.json 有这一行:
"dependencies": {
"@myorg/myorg-common-repo": "~1.0.13",
我尝试在多个地方添加这些行,但似乎没有任何效果:
- 运行 npm 卸载 @myorg/myorg-common-repo && npm install @myorg/myorg-common-repo
- 运行 npm 更新 @myorg/myorg-common-repo --force
关于如何让 docker 构建而不使用 @myorg/myorg-common-repo 上的缓存的任何想法?
【问题讨论】:
-
当你更改
package-lock.json文件中依赖库的版本号时,这将使Docker缓存失效并重新运行npm install序列。 (即使它是您编写的“共享代码”,也应将其视为库并为其使用适当的语义版本控制。) -
@DavidMaze - 不幸的是,这没有帮助。我已经如上所述设置了我的
package.json,并且docker-compose命令使用了缓存而不检查myorg-common-repo是否有更新的版本 -
package-lock.json中的版本号有变化吗? -
@DavidMaze - 我不确定您是在问我是否更改了它,还是在此过程中更改了它,但无论如何,它没有更改。如果您建议我手动更改它 - 这不是我想要的,因为我也可以更改
package.json文件本身
标签: node.js docker npm npm-package