【发布时间】:2018-05-24 16:33:10
【问题描述】:
我有一个 npm 包(npm v 5.5.1,节点版本为 9.2.0)。如果我在本地机器上运行npm install,则执行 package.json 中定义的postinstall,但如果我在 Docker 文件中运行相同的命令RUN npm install,即当命令在容器内运行时,则postinstall 步骤不执行。任何输入可能是这里的问题?
【问题讨论】:
我有一个 npm 包(npm v 5.5.1,节点版本为 9.2.0)。如果我在本地机器上运行npm install,则执行 package.json 中定义的postinstall,但如果我在 Docker 文件中运行相同的命令RUN npm install,即当命令在容器内运行时,则postinstall 步骤不执行。任何输入可能是这里的问题?
【问题讨论】:
所选答案的另一个选项: 您可以将此行添加到您的 dockerfile 以在容器内配置您的 npm 配置(从而允许执行安装后脚本):
FROM ...
RUN npm config set unsafe-perm true
【讨论】:
尝试使用--unsafe-perm 选项运行安装。以 root 身份运行时,npm 不会运行任何脚本。
或者,在 Dockerfile 中创建一个用户并切换到该用户:
FROM ...
RUN groupadd -r app && useradd -r -g app app
USER app
【讨论】: