node.js – Docker安装节点模块并复制回主机

我正在将应用程序移动到新的构建管道.在CI上,我无法安装节点以完成NPM安装步骤.

我的想法是将npm安装步骤移动到使用Node的Docker镜像,安装节点模块,然后将节点模块复制回主机,以便另一个进程可以打包应用程序.

这是我的Dockerfile:

FROM node:9

# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# Install app dependencies
COPY ./dashboard-interface/package.json /usr/src/app/
RUN npm install --silent --production

# Bundle app src
COPY node_modules ./dashboard-interface/node_modules #I thought this would copy the new node_modules back to the host

运行正常并安装节点模块,但是当我尝试将node_modules目录复制回主机时,我看到一条错误说:

COPY node_modules ./dashboard-interface/node_modules
COPY failed: stat /var/lib/docker/tmp/docker-builder718557240/node_modules: no such file or directory

所以很明显,复制过程找不到它刚刚安装了节点模块的node_modules目录.

最佳答案 让我试着解决你遇到的问题.

这是Dockerfile

# Use alpine for slimer image
FROM node:9-alpine

RUN mkdir /app
WORKDIR /app

COPY /dashboard-folder/package.json . 

RUN npm i --production

COPY node_modules ./root

假设您的项目结构如下:

|root
     |   Dockerfile
     |
     \---dashboard-folder
             package.json

root是你的工作目录,它将接收node_modules

使用docker build构建此图像的图像. -t名称,然后像这样使用它:

docker run -it --rm ${PWD}:/app/root NAME mv node_modules ./root

应该做的伎俩.

点赞