该文章旨在描述从零开始搭建环境,中间遇到的问题以及最终的经验总结。当前版本针对于2.0 docker安装版
概要
整体流程贯通,基本可以达到实用级别。满足2-5台服务器,少量的应用部署是完全可以的,但达到一定规模之后则Walle和Jenkins的差异马上就出来了,Walle的环境管理,服务器管理,上线通知,和各插件集成在这些巨大差距看来难以逾越。而除开Walle本身,整套设计还有不少可以优化的点,例如编译脚本,容器部署等。
Walle仍旧有很多需要提高的地方
- 发布构建时(部署上线)服务器卡顿严重,基本不可以多项目发布。
- 构建队列,不能按队列同时发布多个任务逐一执行
- 并行构建,不能同时执行通过任务
- 自定义脚本,针对非git的项目不友善
- 缺少构建参数,目前仅有git的分支号和提交号,有时候需要传入额外参数作用于启动命令中
- 环境变量,安装较为困难,docker-compose-python中对各环境变量支持不好。(例如angular-cli,使用起来相当别扭)
该实战中 - 编译脚本可以优化的地方
- 重复脚本多,可以使用其他方式进行脚本管理,并相互引用。例如直接运行shell,groovy,python等。在环境准备时从git拉去脚本库
- 远程包发布,在无Ansible加持的情况下,远程多服务器发布的效率不可恭维(虽然比人工强)。
该实战中 - 容器部署可以优化的地方
- 日志查询难,运行时需要修改为sh方式启动。nohup无法直接使用,导致查询日志时候需要docker log等命令,学习成本较高
- 服务监控难,docker-compose无法胜任大规模集群机器的监控(还是需要k8s啊)
该实战中 - 经验分享
- Docker内openjdk8运行时区不一致:可以直接同宿主机映射时间命令;然后服务启动设置额外参数(参考文章五,java部署篇)
- Docker-compose启动,则必须用Docker-compose命令停止;否则docker网络无法关闭会超出30个上线
后续
- 想当初“docker学起来真麻烦,我又没那么多机器,不管怎么我也不愿意用这些东西”,现在===>“Docker,真香!”
- PS:最近可能会开一章k8s + SpringCloud部署实战