NPM安装在码头工人
问题描述:
不工作这是我Dockerfile:NPM安装在码头工人
FROM node:7
RUN apt-get update && apt-get install -y --no-install-recommends \
rubygems build-essential ruby-dev \
&& rm -rf /var/lib/apt/lists/*
RUN npm install -gq gulp bower
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY . /usr/src/app
RUN npm install
CMD ["gulp", "start:dev"]
当我建立的形象,故宫安装命令很少输出和真的很快执行。我实际上是通过docker-compose构建的,它有一个卷装 - 我看不到在我的软管上创建的node_modules文件夹。在此映像上启动容器时,我可以看到没有node_modules文件夹。然后我执行npm install并开始工作 - 安装所有软件包需要2-3分钟,并且确实创建了node_modules文件夹。
这里发生了什么?我究竟做错了什么?为什么不在编译时安装npm,但在运行时运行?
答
npm install
应该根据您的Dockerfile
工作。你可以看到创建的文件,如果你没有安装的卷(DIRNAME
:在您docker-compose.yml
所在地):运行图像
docker run --rm -it DIRNAME_node ls -ahl /usr/src/app
随着docker build
,所有数据都存储在图像中。所以,它的目的是看不到在主机上创建的任何文件。
如果您安装一个卷(通常在Linux中,也是在Docker容器中),它可以是overlays the directory。所以你看不到在构建步骤中创建的node_modules
。
我建议你根据Docker映像本身进行测试,不要装入卷。然后你有一个immutable Docker image这对部署更好。
您提到了一个卷,但没有显示在您包含的任何命令或文件中。请包括您的docker-compose.yml并输出显示错误。 – BMitch