npm安装在Docker中不起作用
这是我的Dockerfile:
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"]
当我构build映像时,npm install命令执行的输出很less,而且很快。 我实际上是通过docker-compose构build的,它有一个卷挂载 – 我看不到在我的软pipe上创build的node_modules文件夹。 当我在这个图像上启动容器时,我可以看到没有node_modules文件夹。 然后执行npm install,开始工作 – 安装所有软件包需要2-3分钟,并确实创build了node_modules文件夹。
这里发生了什么? 我究竟做错了什么? 为什么不在编译时安装npm,然后在运行时运行?
npm install
应该基于你的Dockerfile
。 如果您运行没有安装卷的映像( DIRNAME
:您docker-compose.yml
所在的位置),则可以看到已创build的文件:
docker run --rm -it DIRNAME_node ls -ahl /usr/src/app
使用docker build
,所有的数据都存储在图像中。 所以,它的目的是看不到你的主机上创build的任何文件。
如果您安装一个卷(通常在Linux中,也在Docker容器中),它会覆盖目录 。 所以你看不到在构build步骤中创build的node_modules
。
我build议你根据Docker镜像本身进行testing,不要安装音量。 然后你有一个更好的部署的不可变的Docker镜像 。