npm:Postinstall没有在docker中运行

use*_*576 4 node.js npm docker

我有一个npm包(npm v 5.5.1,节点版本是9.2.0).如果我npm install在本地机器上运行,postinstall则执行package.json中定义的但是如果我RUN npm install在Docker文件中运行相同的命令,即当命令在容器内运行时,postinstall则不执行该步骤.任何输入可能是这里的问题?

yam*_*enk 10

尝试使用--unsafe-perm选项运行安装.以root身份运行时,npm不会运行任何脚本.

或者,在Dockerfile中创建一个用户并切换到该用户:

FROM ...
RUN groupadd -r app && useradd -r -g app app
USER app
Run Code Online (Sandbox Code Playgroud)


sab*_*sab 9

所选答案的另一个选项(@yamenk's),在 <v9.x 上进行了测试,其中包括 OP 的版本:您可以将此行添加到您的 dockerfile 中以在容器内配置您的 npm 配置(因此,允许执行安装后脚本)必要的权限):

FROM ...
RUN npm config set unsafe-perm true
Run Code Online (Sandbox Code Playgroud)

如果在 v9 上:

FROM ...

# Create a non-root user
RUN useradd --user-group --create-home --shell /bin/false appuser

# Set the working directory (optional, uncomment if needed)
# WORKDIR /app

# Install dependencies as the non-root user, this will run postinstall
RUN chown -R appuser:appuser /app \
  && npm install

# BONUS: you can go back to default user w/ USER root instead, but if you want to run the application, you should do it as the non-root user, as in: USER appuser
Run Code Online (Sandbox Code Playgroud)