如何将node_modules安装到Docker镜像中,稍后再使用,而不需要docker撰写?
我如何创build一个预装了node_modules
docker-compose
image,而不需要node_modules
docker-compose
?
我知道这是可能的使用docker-compose
(请参阅“安装依赖关系”),但它可能只是直接的Docker?
以下是我想要实现的(CI)广泛的笔触:
- 得到一个新的提交
- 是否有当前分支的Docker镜像? (从DockerHub提取标签)
- YES =>自从构build最后一个映像后,
package.json
是否发生了变化?- YES =>重build图像(do
npm i
); 用一个新的标签推送到DockerHub - NO =>从DockerHub中取出最后一个生成的图像并使用它
- YES =>重build图像(do
- NO =>从DockerHub中提取最后一个构build的
master
映像,并使用它
- YES =>自从构build最后一个映像后,
- 将提交的当前源代码挂载到映像(新build或拖放)
- 做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