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,但在运行时运行?

+1

您提到了一个卷,但没有显示在您包含的任何命令或文​​件中。请包括您的docker-compose.yml并输出显示错误。 – BMitch

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这对部署更好。