「码呗学院」聊一聊互联网公司Docker容器化是如何实践的?( 五 )
docker镜像的构建方式有多种,最合理的一种莫过于Dockerfile了,但此时我们产线运行的项目已经非常多了,一个个往里面添加Dockerfile已经不现实,所以就提供了一个Dockerfile模板,里面标注了基础镜像信息,在项目构建的流程中,通过获取一些项目参数,动态生成一个Dockerfile文件,最后通过docker build生成镜像文件,然后提交到镜像库,这个过程对于开发人员完全无感知,就这样悄无声息的完成了项目格式的转化,并且对于不同类型的项目,提供了不同类型的Dockerfile模板,甚至可以通过项目做定制化。
上面说Dockerfile是动态生成并且对开发人员无感知的,而这个构建过程,也是通过执行容器实现的,通过容器挂载的方式,把构建的结果显示在宿主机上,这整个的过程都做成了docker镜像,并且使用Dockerfile管理这些镜像,通过不同的Dockerfile轻而易举的自定义各个类型项目的构建过程,比如node项目的构建和Java的构建不同,就定义两个Dockerfile就可以了,统一在gitlab上管理,维护成本变得非常低。
发布
项目构建完成,容器的的编排部署,主要是通过marathon操作。marathon本身提供了一些对外开放的api接口,这个开放接口也是我们做自动化基石。项目构建完毕,流程并没有结束。marathon管理的服务编排,主要是配置文件,定义应用,内存,端口,以及健康监测都是在配置文件里面管理的,所以基于此,我按照格式定义了一个项目,专门来管理这些项目的配置,并且把这些配置提交到gitlab上进行管理,项目结构如下:
推荐阅读
- 金铲铲之战|金铲铲之战新赛季最强阵容:学院名流永恩,低分段玩家谨慎使用
- |《哈利波特: 魔法觉醒》学院活动保护南瓜攻略详解教程
- 阴阳师|《金铲铲之战:双城传说》号称最强羁绊的“战斗学院”你值得拥有!
- 战争学院|金铲铲双城新赛季冲分密码,万盾塔里克玩法,兄弟们拿去上分吧!
- 霍格沃茨魔法学院|原神式小将有什么用 原神式小将获取方法
- 推理学院|圣枪哥、sofm有多抠?姿态:我手机成了电子点菜单,到饭点就给他们
- 伐木工|《明日之后》萌新学院:末世优秀伐木工都是怎么炼成的?
- 猎魔人|《巫师3》粉丝们正在争论哪所猎魔人学院最好
- 粉色|国外画师自制格温皮肤!还是战斗学院系列!粉色系超有爱!
- 超神学院|《超神学院》同步更新