我正在node.js应用程序中构建一个docker文件。如果我以这种方式安装包,它可以工作:
RUN npm install express
RUN npm install axios
RUN npm install cloudinary
这些软件包将安装。我有大约12个软件包,这个应用程序和运行他们的安装一个接一个这样对我来说似乎不好。但如果我运行整个安装一次像这样:
RUN npm install
一旦它到达npm installation
部分,它将挂起超过7分钟,并最终失败,并出现以下错误:
executor failed running [/bin/sh -c npm install --only=production]: exit code: 1
是什么引起的?
下面是dockerfile:
## multi stage system
FROM node:lts-alpine
# create root application folder
WORKDIR /app
# copy configs to /app folder
COPY package.json ./
COPY package-lock.json ./
COPY tsconfig.json ./
COPY ecosystem.config.js ./
# copy source code to /app/src folder
COPY src /app/src
RUN npm install
RUN npm run build
FROM node:lts-alpine
WORKDIR /app
COPY package.json ./
COPY package-lock.json ./
RUN npm install --omit=dev
RUN npm install pm2 -g
COPY --from=0 /app/build ./build
RUN npm uninstall typescript
USER node
CMD ["pm2-runtime", "ecosystem.config.js"]
EXPOSE 5000
我在Windows 11上运行这个
1条答案
按热度按时间33qvvth11#
我决定使用这个解决方案:我只是简单地提到了我想安装的所有包,作为package.json脚本的一部分,并在docker build中运行了该脚本。
在dockerfile中,我做了
RUN npm run install