部署 有 Docker 集群部署 Rails 的项目经验的大胸弟么?

yingce · 2016年12月10日 · 最后由 zhusas 回复于 2018年03月14日 · 2300 次阅读

目前使用的是 capistrano/mina 配合搭建好的服务器来部署多台服务器; 但最近想使用 Docker 来部署下 Rails ;

因为使用的 docker swarm 所以可能会经常新增 container;

最主要问题是 我现在已经开启的实例是使用 capistrano 这类工具直接部署么,还是删掉旧的实例然后部署新的实例来更新代码?

如果是使用 capistrano 怎么配合 docker 的集群功能全部部署,实例数量不详、IP 不详。

共收到 16 条回复

现在比较倾向的是继续使用 cap/mina 因为需要 remote console 这个功能

下一步我们也会尝试做。目前有很多云服务提供了服务,可以借鉴下。

可以参考 ruby china 的 docker 工程。不用停掉原有工程,直接部署新容器

用了 docker 就用不到 capistrano 了,bundle install 直接装在 docker 里打包成镜像。assets:precompile 和 db:migrate 都可以自己写 ruby 脚本检测文件变化然后远程执行。remote console 不就是ssh -t root@host 'docker exec -ti container /bin/bash'

正在尝试迁移到 docker

可以试试 daocloud

#3 楼 @alex_l_zhang docker-compose 么? 如果之前的不停掉怎么更新代码和重启?

#4 楼 @Trump 连上所有的实例?

我们团队在推广一整套 CI 以及 docker 部署方案,CI 我们用的是 GoCD, 容器编排以及发布用的是 rancher, rails 容器的打包是 shell 来自动化做的!现在基本上不用capistrano/mina, 代码的发布和上线全走的 CI

#9 楼 @huhongda 那你们做的部署过程也是先新建实例,启动成功后删掉就实例么? 有没有详细一点的文档或者配置这些, 谢谢。

#9 楼 @huhongda DroneCI 也不错 可以看看

#9 楼 @huhongda 我们也在做类似的事情, 可以交流下

#12 楼 @42thcoder 可以 @ 他让他开个帖子详讲一下吧 哈哈

#10 楼 @yingce 你说的是容器的部署吧!我大概给你说说我们这边是怎么做的! 我们是走 CI,步骤是

  1. clone 项目到 CI agent 节点,然后根据项目中的文档生成对应的文档,然后上传至文档服务器(文档用的是apidocjs
  2. 做项目的语法检测以及代码复杂度检查 rubocop & rubycritic
  3. 将项目打包到 docker 镜像中,以项目名为 docker 容器名,这块打包是用 shell 来做的!最终会生成这样两个 docker 镜像:eg, ruby_china:1.0.1 && ruby_china:latest
  4. 调用RancherAPI 来进行部署,Rancher 是先停用已经在运行的容器,然后 clone 最新的项目 docker 镜像下来,然后再运行,这个是我们采用的方式,Rancher 还有另外一种滚动部署的方式(即先运行再停用老的容器的方式)

你所问的4回答你了!

#14 楼 @huhongda 我抽空研究下, 非常感谢

踩坑中,测试环境准备部署

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册