Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何构建用于Dockerfile的npm依赖项?_Node.js_Docker_Npm - Fatal编程技术网

Node.js 如何构建用于Dockerfile的npm依赖项?

Node.js 如何构建用于Dockerfile的npm依赖项?,node.js,docker,npm,Node.js,Docker,Npm,我正在为该项目制作一个带有预构建构建工具链的Dockerfile,但我有一个问题,我找不到一种方法使npm依赖项保持不变,而: 这是我的dockerfile: FROM centos:latest as base LABEL maintainer="stig124 <stigpro@outlook.fr>" LABEL upstream="https://github.com/FreeTubeApp/FreeTube" RUN dnf -y

我正在为该项目制作一个带有预构建构建工具链的Dockerfile,但我有一个问题,我找不到一种方法使npm依赖项保持不变,而:

这是我的dockerfile:

FROM centos:latest as base

LABEL maintainer="stig124 <stigpro@outlook.fr>"
LABEL upstream="https://github.com/FreeTubeApp/FreeTube"

RUN dnf -y update &&\
    dnf -y --nodocs install git curl rpm-build redhat-rpm-config &&\
    curl -fsSL https://rpm.nodesource.com/setup_current.x | bash - &&\
    dnf -y --nodocs groupinstall 'Development Tools' &&\
    dnf -y --nodocs install nodejs &&\
    curl -L https://npmjs.org/install.sh | sh &&\
    dnf clean all

FROM base as deps

WORKDIR /root

ARG branch=development
ARG URL=https://github.com/FreeTubeApp/FreeTube.git

RUN git clone "${URL}"

WORKDIR /root/FreeTube

RUN git checkout "${branch}"

RUN npm config set prefix /root/npm && export PATH="/root/npm/bin:${PATH}" && npm install

ENV PATH="/root/npm/bin:${PATH}"

WORKDIR /root

RUN rm -rf /root/FreeTube

WORKDIR /root/FreeTube

ENTRYPOINT ["/usr/bin/npm", "run", "build"]
如果我运行上述Dockerfile,它将失败:

> freetube@0.12.0 build
> run-s rebuild:electron pack build-release

sh: run-s: command not found
这意味着一个路径问题,但我不知道它从何而来

为了对npm包进行某种全局安装(因为npm不提供全局安装
package.json
的方法),我使用了中的代码段。我知道将全局安装与npm一起使用不是一个好主意,但在容器上我真的不在乎

在运行时安装依赖项有点像我试图达到的目的,所以这不是一个选项


如果有人有想法,那将是一个很好的解决方案,我没有一个解决方案给你,但是作为一个提示,这一行
运行npm config set prefix/root/npm&&export PATH=“/root/npm/bin:${PATH}”&&npm install
可能没有达到你想要的效果。npm install仍将在
/root/FreeTube/node_modules
中安装程序包,导致在运行
rm-rf/root/FreeTube/
时删除这些程序包,这是您收到的错误消息的来源。