Docker build - npm 版本与 lockfileVersion@1 不兼容
Docker build - version of npm is incompatible with lockfileVersion@1
我正在尝试构建一个 Docker 反应应用程序的图像。
这是package.json的第一部分:
{
"name": "front",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.14.1",
"@testing-library/react": "^11.2.7",
"@testing-library/user-event": "^12.8.3",
"eslint": "^7.29.0",
"html-react-parser": "^1.2.7",
"npm": "^6.14.4",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-input-mask": "^3.0.0-alpha.2",
"react-redux": "^7.2.4",
"react-router-dom": "^5.2.0",
"react-scripts": "^4.0.3",
"redux": "^4.1.0",
"semantic-ui-css": "^2.4.1",
"semantic-ui-react": "^2.0.3",
"web-vitals": "^1.1.2"
},
这是 Docker 文件:
# pull official base image
FROM node:13.12.0-alpine
# set working directory
WORKDIR /app
# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH
ARG REACT_APP_BASEURL='https://localhost:8081'
ENV REACT_APP_BASEURL=$REACT_APP_BASEURL
# install app dependencies
COPY package.json ./
COPY package-lock.json ./
RUN npm install
# add app
COPY . ./
#EXPOSE
EXPOSE 3000
# start app
CMD ["npm", "start"]
所以,我用命令行构建:
docker build -f Dockerfile -t api_front .
我收到了这条错误消息:
npm WARN read-shrinkwrap This version of npm is compatible with
lockfileVersion@1, but package-lock.json was generated for
lockfileVersion@2. I'll try to do my best with it!
如果我用 npm -v
检查 npm 的版本,我有最新的 (7.19.1)
如果我转到项目文件夹 运行 npm install
,一切都是最新的
如果我用 npm start
启动应用程序,一切正常并且 api 是 运行ning...
有什么问题?
编辑:解决方案
我改变了:
FROM node:13.12.0-alpine
至
FROM node:latest
用于生成 package-lock.json
文件的 npm (v7.19.1) 版本比 node 13.12.0 的 docker 映像中的 npm (v6.14.4) 版本更新.
1: The lockfile version used by npm v5 and v6.
2: The lockfile version used by npm v7, which is backwards compatible to v1 lockfiles.
您可以阅读有关锁定文件版本的更多信息here
您可以升级 docker 映像以使用最新版本或降级您的 npm 以生成兼容的 package-lock.json
编辑#1:
您必须将 docker 文件的第一行替换为:
FROM node:16.4.2
我正在尝试构建一个 Docker 反应应用程序的图像。
这是package.json的第一部分:
{
"name": "front",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.14.1",
"@testing-library/react": "^11.2.7",
"@testing-library/user-event": "^12.8.3",
"eslint": "^7.29.0",
"html-react-parser": "^1.2.7",
"npm": "^6.14.4",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-input-mask": "^3.0.0-alpha.2",
"react-redux": "^7.2.4",
"react-router-dom": "^5.2.0",
"react-scripts": "^4.0.3",
"redux": "^4.1.0",
"semantic-ui-css": "^2.4.1",
"semantic-ui-react": "^2.0.3",
"web-vitals": "^1.1.2"
},
这是 Docker 文件:
# pull official base image
FROM node:13.12.0-alpine
# set working directory
WORKDIR /app
# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH
ARG REACT_APP_BASEURL='https://localhost:8081'
ENV REACT_APP_BASEURL=$REACT_APP_BASEURL
# install app dependencies
COPY package.json ./
COPY package-lock.json ./
RUN npm install
# add app
COPY . ./
#EXPOSE
EXPOSE 3000
# start app
CMD ["npm", "start"]
所以,我用命令行构建:
docker build -f Dockerfile -t api_front .
我收到了这条错误消息:
npm WARN read-shrinkwrap This version of npm is compatible with lockfileVersion@1, but package-lock.json was generated for lockfileVersion@2. I'll try to do my best with it!
如果我用 npm -v
检查 npm 的版本,我有最新的 (7.19.1)
如果我转到项目文件夹 运行 npm install
,一切都是最新的
如果我用 npm start
启动应用程序,一切正常并且 api 是 运行ning...
有什么问题?
编辑:解决方案
我改变了:
FROM node:13.12.0-alpine
至
FROM node:latest
用于生成 package-lock.json
文件的 npm (v7.19.1) 版本比 node 13.12.0 的 docker 映像中的 npm (v6.14.4) 版本更新.
1: The lockfile version used by npm v5 and v6.
2: The lockfile version used by npm v7, which is backwards compatible to v1 lockfiles.
您可以阅读有关锁定文件版本的更多信息here
您可以升级 docker 映像以使用最新版本或降级您的 npm 以生成兼容的 package-lock.json
编辑#1:
您必须将 docker 文件的第一行替换为:
FROM node:16.4.2