Node.js 如何构建用于Dockerfile的npm依赖项?
我正在为该项目制作一个带有预构建构建工具链的Dockerfile,但我有一个问题,我找不到一种方法使npm依赖项保持不变,而: 这是我的dockerfile: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
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/
时删除这些程序包,这是您收到的错误消息的来源。