我正在将应用程序移动到新的构建管道.在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
应该做的伎俩.