#node.js #docker #npm #build
#node.js #docker #npm #сборка
Вопрос:
Я пытаюсь обновить NPM с ["npm","install","-g","npm"]
помощью, но он говорит:
Step 4/12 : RUN ["npm", "install", "-g", "npm"]
---> Running in 708a95e71771
npm ERR! code EISDIR
npm ERR! syscall copyfile
npm ERR! path /usr/local/lib/node_modules/npm
npm ERR! dest /usr/local/lib/node_modules/.npm-i9nnxROI
npm ERR! errno -21
npm ERR! EISDIR: illegal operation on a directory, copyfile '/usr/local/lib/node_modules/npm' -> '/usr/local/lib/node_modules/.npm-i9nnxROI'
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2020-12-31T13_38_29_907Z-debug.log
The command 'npm install -g npm' returned a non-zero code: 235
Мой dockerfile:
FROM node
WORKDIR /root
COPY package*.json ./
RUN ["npm", "install", "-g", "npm"]
RUN ["npm", "audit", "fix"]
RUN ["npm", "install"]
COPY ./*.js ./
COPY static ./static
COPY views ./views
COPY conf.d/* /etc/dashboard/
EXPOSE 80
CMD ["node", "index.js"]
Похоже, что /usr/local/lib/node_modules/.npm-i9nnxROI или /usr/local/lib/node_modules/npm — это каталог, а не файл, но я думаю, что это должен быть каталог.
В моей системе (Linux 5.10.2-2-MANJARO # 1 SMP ВЫТЕСНЯЕТ x86_64 GNU / Linux) это работает, но на моем сервере (Linux 5.4.0-58-generic # 64-Ubuntu SMP x86_64 x86_64 x86_64 GNU / Linux) этого не происходит.
Комментарии:
1. npm должен быть каталогом, в котором находится copypart, куда вы копируете его со своего компьютера в свой контейнер?
2. Я не копирую его.
npm -g install npm
пытается скопировать что-то внутри контейнера.
Ответ №1:
From node
устанавливает последний узел, который имеет npm версии 7 . Его нестабильность имеет некоторые проблемы
использовать
FROM node:lts