我正在将应用程序移动到新的构建管道.在CI上,我无法安装节点以完成NPM安装步骤. 我的想法是将npm安装步骤移动到使用Node的Docker镜像,安装节点模块,然后将节点模块复制回主机,以便另一
我的想法是将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
应该做的伎俩.