0%

2020-05-03 docker-compose持续集成初步探究

docker-compose持续集成初步探究

如果还对docker不太了解可以先看看这两篇教程,十分详细。

Docker 教程

Docker —— 从入门到实践

只要在项目根目录下写好 Dockerfile 和 docker-compose.yml ,然后执行

1
2
3
docker-compose stop #如果原有项目已存在,则先停止
docker-compose up -d --build #加上--build重新编译项目
docker system prune -a -f #清理掉失效容器和镜像,如果不清理每次部署都会重新生成一个镜像,很占磁盘

在使用docker-compose up -d --build编译的过程中会利用以前已经编译过的缓存,这对于整个项目的快速部署是十分有帮助的

例如,我们都知道 nodejs 项目中的 node_modules 是非常庞大的,如果每次部署都要重新下载会非常耗时间,因此要利用缓存

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 编译环境
FROM alpine:3.11

WORKDIR /home/app

#锁定nodejs版本
ENV NODE_VERSION 12.15.0-r1
ENV NPM_VERSION 12.15.0-r1
ENV NODE_ENV production

# 安装nodejs环境。
RUN echo "http://mirrors.aliyun.com/alpine/v3.11/main/" > /etc/apk/repositories \
&& echo "http://mirrors.aliyun.com/alpine/v3.11/community/" >> /etc/apk/repositories \
&& apk update \
&& apk add --no-cache --update "nodejs=${NODE_VERSION}" "nodejs-npm=${NPM_VERSION}" \
&& npm config set registry https://registry.npm.taobao.org

COPY package.json /home/app/

RUN npm install --production #先安装依赖能有效利用缓存

COPY . /home/app

RUN npm run build #部署命令由项目决定

EXPOSE 80 #对外开放80端口

CMD ["npm", "start"] #启动命令

修改完代码后提交到github之类的代码仓库,然后使用webhook推送到jenkins之类的CI进行编译部署即可。

本文作者:草梅友仁
本文地址: https://blog.cmyr.ltd/archives/668e46b6.html
版权声明:转载请注明出处!

坚持原创技术分享,您的支持将鼓励我继续创作!