尝试在docker中安装全局模块时获取Error: EACCES: permission denied, open '/usr/local/lib/node_modules
:
FROM node:latest
RUN mkdir -p /code
RUN npm i -g npm
WORKDIR /code
RUN npm set progress=false && npm install -g exp
中没有相关信息
答案 0 :(得分:5)
当您以root身份运行npm(这是Docker构建中的默认用户)并安装全局软件包时,出于安全原因,npm将以没有任何权限的用户nobody
的身份安装并执行二进制文件。这是出于安全原因。
您可以通过添加--unsafe-perm
标志来解决此问题:
RUN npm install --global --unsafe-perm exp
或通过将全局用户显式设置为root
:
RUN npm --global config set user root && \
npm --global install exp
答案 1 :(得分:2)
这是npm和exp模块之间的问题。您可以使用纱线安装模块
MODULE 72: Module._load REQUEST path parent: /usr/local/lib/node_modules/exp/node_modules/decompress-zip/lib/file-details.js
MODULE 72: load native module path
ngrok - error unpacking binary { Error: EACCES: permission denied, open '/usr/local/lib/node_modules/exp/node_modules/@expo/ngrok/bin/ngrok'
errno: -13,
code: 'EACCES',
syscall: 'open',
path: '/usr/local/lib/node_modules/exp/node_modules/@expo/ngrok/bin/ngrok' }
npm info lifecycle @expo/ngrok@2.2.8~postinstall: Failed to exec postinstall script
npm WARN react-redux@5.0.6 requires a peer of react@^0.14.0 || ^15.0.0-0 || ^16.0.0-0 but none was installed.
MODULE 38: Module._load REQUEST os parent: /usr/local/lib/node_modules/npm/lib/utils/error-handler.js
MODULE 38: load native module os
但您可以使用纱线
进行安装$ yarn global add exp
有关详细信息,请参阅以下问题
答案 2 :(得分:0)
您可以在安装命令之前尝试以节点或root用户身份登录,在RUN命令之前添加“USER”:
USER root
或
SELECT COUNT(*) FROM User
union all
SELECT COUNT(*) FROM Friends
union all
SELECT COUNT(*) FROM Clans
union all
SELECT COUNT(*) FROM ClanMembers
union all
SELECT SUM(coins) FROM User
...