使用 daocloud 和 docker 实现 vue 的持续集成
一、Dockerfile
Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。
而 FROM
就是指定基础镜像,因此一个 Dockerfile
中 FROM
是必备的指令,并且必须是第一条指令。
Dockerfile 中的每一条指令都是一个 layer,docker build 的过程中会缓存 layer,所以就存在可优化的地方。
二、持续集成
push 代码到远程分支,自动测试 自动构建 自动发布。
daocloud 使用安全构建: 创建项目->安全构建
安全构建有 2 步,第一步为 build,构建一个临时镜像 第二步为将临时镜像打包,开始安全构建
三、3 个关键文件
一、Dockerfile
1 | FROM node:alpine |
其中的
1 | COPY package.json /tmp/package.json |
就是利用缓存进行构建的优化,只有这样,才能利用上次缓存不重新安装 npm 包。否则每次都重新安装 npm 包消耗大量的构建时间。
这个 Dockerfile 很显然是 build 过程
构建结束后,会生成 dist 目录。我们发布的时候需要把 dist 的目录丢到网站 root 目录。
daocloud 安全构建的第二步骤可以将第一步骤中的文件提取出来。
文件提取的目录为: /opt/workdir/dist
二、Dockerfile.build
1 | FROM nginx:alpine |
将构建结果打包发布
三、nginx.conf
1 | user nginx; |
因为 vue-route 开启了 history 模式。需要配置不同的 nginx.conf
四、提供持续集成服务的网站
1.jenkins
2.flow.ci