Docker 卡在 npm install

问题描述 投票:0回答:6

我有一个项目想要 dockerize。我在我的计算机上运行

npm install
npm build
没有问题,但是当我使用 Docker 构建时,它出现了一些问题。

Docker 输出:

Sending build context to Docker daemon  56.96MB
Step 1/7 : FROM node:12.2.0-alpine
---> f391dabf9dce
Step 2/7 : WORKDIR /app
---> Using cache
---> b50a8efbf074
Step 3/7 : ENV PATH /app/node_modules/.bin:$PATH
---> Using cache
---> 3358967a13ab
Step 4/7 : COPY package.json /app/package.json
---> Using cache
---> 851ac31a0adb
Step 5/7 : RUN npm install
---> Running in 8cc36a435cec
npm WARN deprecated [email protected]: core-js@<2.6.8 is no longer maintained. Please, upgrade to core-js@3 or at least to actual version of core-js@2.

卡在这里:

Dockerfile:

# base image
FROM node:12.2.0-alpine

# set working directory
WORKDIR /app

# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH

# install and cache app dependencies
COPY package.json /app/package.json
RUN npm install
RUN npm install [email protected] -g --silent

# start app
CMD ["npm", "start"]

我已经用其他 dockerfile 完成了此操作,但结果是相同的。

package.json:

{
  "name": "front",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "axios": "^0.18.0",
    "bootstrap": "^4.3.1",
    "express": "^4.17.0",
    "react": "^16.8.6",
    "react-dom": "^16.8.6",
    "react-router": "^5.0.0",
    "react-router-dom": "^5.0.0",
    "react-scripts": "2.1.8"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": [
    ">0.2%",
    "not dead",
    "not ie <= 11",
    "not op_mini all"
  ]
}
reactjs docker dockerfile
6个回答
0
投票

因此,在正确解决此问题之前,这可能是一个临时解决方案,但您可以使用

npm config set registry http://registry.npmjs.org/

我已经将它用于docker环境并且运行良好。


0
投票

每当您运行

docker run my-image
时,它将在新容器中运行,并且以前的容器保持未使用状态, 我们可以使用
docker build location-of-the-Dockerfile --no-cache
切换到不使用缓存图像,但它对我不起作用 就我而言,删除未使用的容器和图像解决了问题,

删除所有容器 >

docker rm $(docker ps -aq)

如果需要,请删除所有图像 >>
docker image rm $(docker images -q)


0
投票

我最近遇到了同样的问题。

我必须添加以下

npm ci --force
来代替。

然后花了相当长的时间来加载,但最终成功了。

为什么

npm ci
而不是
npm i

  • 项目必须具有现有的 package-lock.json 或 npm-shrinkwrap.json。
  • 如果包锁中的依赖项与 package.json 中的依赖项不匹配,npm ci 将错误退出,而不是更新包锁。
  • npm ci 一次只能安装整个项目:无法使用此命令添加单个依赖项。
  • 如果node_modules已经存在,它将在npm ci开始安装之前自动删除。
  • 它永远不会写入 package.json 或任何包锁:安装基本上被冻结。

0
投票

有时为了限制问题,我们必须在 npm 配置中使用代理。 但主要使用yarn而不是npm来解决问题。


0
投票

我遇到了类似的问题,结果是由 npm 代理设置引起的,该设置意外地在 npm 的全新安装中进行了预配置。

删除代理解决了它:

npm config get proxy
npm config rm proxy
npm config rm https-proxy

学分:https://stackoverflow.com/a/33246717/2385906


-4
投票

我也有同样的问题。我只等了1个小时就进入下一步了

编辑: 构建 npm install 时会下载所有软件包,这需要时间,这取决于应用程序的大小,需要多长时间。

© www.soinside.com 2019 - 2024. All rights reserved.