docker 发版本 跟传统的 Capistrano mina 发版本 有啥 优缺点么 谢谢大家 不吝赐教!!!! 我感觉 Capistrano 就很够我折腾了
docker 部署可以部署到任何容器管理器里,如 aws 的 ecs 容器服务,可以灵活缩放实例数量。还能够接入 k8s 这种云原生基础设施. 而 mina 传统部署只能对一台或多台服务器主机,不如 docker 灵活. 像 rails java 这种解释性语言的镜像一般比较大,docker 部署因为要打包传输,部署速度会慢些。使用一些部署方法可以解决镜像版本不一致的问题。
基本学习路径:
根据我个人的经验,docker 发版本的话除了懂 Docker 还需要有一定的系统配置知识,镜像定制化的过程有点像给操作系统安装软件,你要先选系统,软件,最后还要想办法让这个镜像不要过于庞大。好处就是一切都在镜像里面配置好了,不需要太管服务器那边操作系统的环境。后期对于项目扩容那些做起来都比较方便,数据库,nginx 这些都可以做到与服务器上的其他项目隔离,不会相互干扰。但有时候这些东西配置起来也是比较麻烦,特别是对容器中的服务进行操作还得通过命令进入到容器中去。个人觉得比较麻烦。
Capistrano 的话就是流程配置比较简单,有很多第三方的包能够辅助你部署好一个 Rails 应用,基本上不需要太多的配置,我个人比较喜欢。但是你需要事先在服务器上面准备好相应的系统环境,eg, 对应版本的 Ruby,MySQL/PostesSQL, Nginx 等等。而如果你服务器上还有其他项目用到这些服务的话,那个项目被攻击了,相应的服务 down 了,可能就会就会影响到你当前项目的状态。
个人觉得如果是简单的对扩容要求不高的项目,而且也没那么多时间去熟悉容器化技术的,还是选择后者比较好。起码先把项目上去先。以后有空再优化。
好处是有很多别人已经做好了的基础镜像,拿来就能用,比如 https://github.com/ledermann/docker-rails-base 真香!
我现在还在用 capistrano 部署,Docker 的优点很多,但是,capistrano 可以让我改好代码递交后,30 秒内部署生产服务器完毕。