运行 docker 中的 npm update 不在该特定更新上使用缓存
Run npm update in docker without using the cache on that specific update
背景:
- 我正在
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 uninstall @myorg/myorg-common-repo && npm install @myorg/myorg-common-repo
- 运行 npm update @myorg/myorg-common-repo --force
关于如何让 docker 在 @myorg/myorg-common-repo
上构建而不使用缓存的任何想法?
所以我终于设法使用 this answer:
解决了这个问题
我们要做的是使 Docker 文件中特定块的缓存无效,然后 运行 我们的更新命令。这是通过向命令(CLI 或 Makefile)添加构建参数来完成的,如下所示:
docker-compose -f docker-compose-dev.yml build --build-arg CACHEBUST=0
然后将此 附加 块添加到 Docker 文件:
ARG CACHEBUST=1
USER node
RUN npm update @myorg/myorg-common-repo
这就是我们想要的。
ARG CACHEBUST=1
使缓存无效,npm update
命令 运行 没有它。
背景:
- 我正在
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 uninstall @myorg/myorg-common-repo && npm install @myorg/myorg-common-repo
- 运行 npm update @myorg/myorg-common-repo --force
关于如何让 docker 在 @myorg/myorg-common-repo
上构建而不使用缓存的任何想法?
所以我终于设法使用 this answer:
解决了这个问题我们要做的是使 Docker 文件中特定块的缓存无效,然后 运行 我们的更新命令。这是通过向命令(CLI 或 Makefile)添加构建参数来完成的,如下所示:
docker-compose -f docker-compose-dev.yml build --build-arg CACHEBUST=0
然后将此 附加 块添加到 Docker 文件:
ARG CACHEBUST=1
USER node
RUN npm update @myorg/myorg-common-repo
这就是我们想要的。
ARG CACHEBUST=1
使缓存无效,npm update
命令 运行 没有它。