我正在尝试通过Docker容器进行npm安装:
这是一个DockerFile:
# default /var/www/html (mapped to .../code folder with projects)
FROM node
WORKDIR /work
# Additional tools (ng, gulp, bower)
RUN npm install -g @angular/cli bower gulp grunt
CMD while true; do sleep 10000; done
EXPOSE 3002 3003 3004
我运行并使用以下命令将其映射:
docker run -d --name node-cmd -p 3002:3002 -p 3003:3003 -p 3004:3004 -v
/m/dockerlogs/node-cmd/logs:/root/.npm/_logs -v /m/projekty:/work node-cmd
我通过以下方式登录到该容器:
docker exec -it node-cmd bash -c "cd /code; bash"
运行npm install(https://github.com/gdi2290/angular-starter)之后,我从已登录的容器中编写此代码
但是安装后出现此错误
npm ERR! Maximum call stack size exceeded
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2018-09-17T17_38_34_855Z-debug.log
root@08e3cd77fb83:/work/angular-starter-master#
我试图删除node_modules,但是这个问题总是存在。
有时,出现此错误后,当我再次尝试npm install时,控制台会向我显示以下内容:
npm ERR! path /work/angular-starter-
master/node_modules/@schematics/update/packa
ge.json.2932816706
npm ERR! code ETXTBSY
npm ERR! errno -26
npm ERR! syscall rename
npm ERR! ETXTBSY: text file is busy, rename '/work/angular-starter-
master/node_m
odules/@schematics/update/package.json.2932816706' -> '/work/angular-
starter-mas
ter/node_modules/@schematics/update/package.json'
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2018-09-17T17_14_43_970Z-debug.log
root@08e3cd77fb83:/work/angular-starter-master#
我的npm版本是6.4.1
我有Windows 8.1和Docker Toolbox
但是当我在没有Docker的Windows上编写npm install时,一切正常。
答案 0 :(得分:1)
好的,我解决了这个问题,我使用了带有--no-bin-links标志的npm install。感谢您的回答:)
答案 1 :(得分:1)
这可能是因为节点版本不同。使用node -v
检查您的节点版本,并将其用于Dockerfile
。在此处检查受支持的标签和Dockerfile链接:https://hub.docker.com/_/node
在Dockerfile
中,我从FROM node:alpine AS node_builder
更改为FROM node:lts-alpine AS node_builder
,现在可以使用了。
答案 2 :(得分:0)
对我来说,这最终是由权限问题引起的(我以前在docker之外安装过node_modules)。删除node_modules并仅在docker内部安装可解决此问题。