我有一个 dockerfile 如下,但是在 RUN npm ci
步骤中,有一个警告,
npm WARN old lockfile package-lock.json 文件是使用旧版本的 npm 创建的
我无法弄清楚..
我尝试使用 npm install 而不是 npm ci 并添加了 --package-lock
标志,但我仍然收到此警告。这是一种警告,我必须忽略它,或者我应该怎么做才能解决这个问题?
Step 12/26 : RUN npm ci --production --package-lock && npm ci --production --package-lock --prefix ./ui-runner
---> Running in 3473c209b98c
npm WARN old lockfile
npm WARN old lockfile The package-lock.json file was created with an old version of npm,
npm WARN old lockfile so supplemental metadata must be fetched from the registry.
npm WARN old lockfile
npm WARN old lockfile This is a one-time fix-up, please be patient...
npm WARN old lockfile
这是我的 Dockerfile 。
FROM node:14.17.1-alpine3.13 AS builder
WORKDIR /usr/src/app
COPY package.json package-lock.json* ./
COPY ui-runner/package*.json ./ui-runner/
COPY .npmrc .npmrc
COPY ui-runner/.npmrc ./ui-runner/.npmrc
RUN npm -g install npm@7.19.1
RUN npm ci --production --package-lock && \
npm ci --production --package-lock --prefix ./ui-runner
RUN rm -f .npmrc && \
rm -f ui-runner/.npmrc
FROM node:14.17.1-alpine3.13
WORKDIR /usr/src/app
RUN apk update && apk add --no-cache curl bash
RUN addgroup -g 1001 test && \
adduser -S -u 1001 -G test test
RUN chown -R test /usr/src/app && \
chmod 755 /usr/src/app
COPY --from=builder /usr/src/app /usr/src/app
COPY . .
RUN npm run build:docker
USER test
EXPOSE 3000 9183
CMD [ "npm", "run", "start:ui-runner" ]
原文由 semural 发布,翻译遵循 CC BY-SA 4.0 许可协议
有几种方法可以解决这个问题:
忽略它。这只是一个警告,不影响模块的安装。
运行
npm install --package-lock-only
(使用较新版本的npm
)重新生成package-lock.json
。将package-lock.json
的更新版本提交到 repo/Docker 映像或其他任何内容。将
npm
降级到生产中的旧版本。考虑运行npm
版本 6,因为这是当前(截至撰写本文时)长期支持 (LTS) 版本的 Node.js 附带的版本。在这个问题中被问到的情况下,我想你可以从 Dockerfile 中省略RUN npm -g install npm@7.19.1
而是使用npm
与 Docker 映像一起安装的版本(在这种情况下几乎肯定是npm@6
因为这是 Node.js 14.x 附带的)。如果您已经安装了
npm
的一个版本,但想使用旧版本的npm
运行一个命令,但要保留较新的版本,则可以使用npx
(附带npm
)来做到这一点。例如,npx npm@6 ci
将运行npm ci
和npm
版本6,即使你安装了版本7。