如何将node_modules安装到Docker镜像中,稍后再使用,而不需要docker撰写?

我如何创build一个预装了node_modules docker-compose image,而不需要node_modules docker-compose

我知道这是可能的使用docker-compose (请参阅“安装依赖关系”),但它可能只是直接的Docker?

以下是我想要实现的(CI)广泛的笔触:

  1. 得到一个新的提交
  2. 是否有当前分支的Docker镜像? (从DockerHub提取标签)
    • YES =>自从构build最后一个映像后, package.json是否发生了变化?
      • YES =>重build图像(do npm i ); 用一个新的标签推送到DockerHub
      • NO =>从DockerHub中取出最后一个生成的图像并使用它
    • NO =>从DockerHub中提取最后一个构build的master映像,并使用它
  3. 将提交的当前源代码挂载到映像(新build或拖放)
  4. 做testing/ linting /任何,而不必做npm install (因为它已经完成)

我已经设置了我的configuration文件来完成所有这些工作,但是build立/拉出的映像在工作目录中没有node_modules来运行我的testing/ linting /无论如何。 这是我需要弄清楚的。


这是我的Dockerfile到目前为止

 FROM node:8.1.2-alpine RUN apk --update add --no-cache git ADD git-branch /tmp/git-branch RUN (cd /tmp/git-branch && npm install --silent --progress=false) RUN mkdir -p /var/app && mv /tmp/git-branch/node_modules /var/app RUN rm -rf /tmp/git-branch