该文章旨在描述从零开始搭建环境,中间遇到的问题以及最终的经验总结。
当前版本针对于 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 部署实战