目前的应用主要是 rails/nodejs apps,通过 docker-compose 控制各种服务,部署都是 ssh 进入 host -> 用 makefile 执行 upgrade 脚本(删掉旧的 containers/images,重新 build) -> makefile 执行编译 assets:rails assets:precompile
-> 运行 containers
简单了解了下如下几个工具:
我的需求是:
类似 capistrano 那样执行一行命令就能自动从 git pull 部署(对于 docker-compose 来说 rebuild 一次就好)。
或者
有 Web UI,点下更新就可以 rebuild。
感觉有点杀鸡用牛刀,对于我这种需求是不是自己写个脚本便好?
1
precisi0nux 2016-12-17 06:01:29 +08:00 via iPhone 1
写脚本,如果要图形化界面的话在放 Jenkins 上。
|
2
NathanInMac 2016-12-17 06:02:32 +08:00 1
取决于你和你的团队的需求了,你们没有 CI 的需求吗?部署一般放在测试之后对吧,所以大部分的 CI 工具都有部署的功能。 build docker image 也可以放在 CI 跑。
然后我有点没明白你的流程,为什么要重新跑一遍 assets precompile ,是因为多个 rails containers share 一个 volume 放静态文件吗?如果是这样的话,也可以在 CI 上跑了 scp 过去吧,尽量减少服务器上干的事儿。 最后是删掉旧的 containers/images 这个事情,其实 docker-compose 会帮你处理的,除非你改动了 image 的名字,不然是不会用冗余的 container 和 images 的。 可以试试 travis ci , circle ci ,或者自建 jenkins ,然后在 test 过了之后自动 ssh 到服务器跑 docker-compose |
3
cherrot 2016-12-17 12:30:33 +08:00 via Android 1
我觉得需求很简单直接部署一个 CI 就够了。我们是 Jenkins , git push 以后自动构建 image ,在发布机上 stop , rm , volume rm , rmi , up 就行了。
|