部署 用 Dokku 部署 Rails 应用简洁教程

FinnG · 2022年03月26日 · 最后由 FinnG 回复于 2022年06月04日 · 899 次阅读

以前在自己的内网树莓派上部署过几回 Rails 应用,控制家里的冰箱彩电洗衣机缝纫机旧电脑旧电视😅 (主要是热水器和车库门以及一些传感器), 每个 pi 上都要装一遍 rbenv, 经历一系列部署的过程,实在太麻烦。

在外网上就方便些,自己做的小项目以前一直都是用 Heroku 部署,但是访问量比较少,而且 Heroku 又比较贵,于是就把几个应用放到一个 VPS 上,用 Dokku 来部署,感觉很方便,从零开始也就十几行命令搞定,而且还能配置 HTTPS 的证书和 www<=>apex 的重定向,这点要比 Heroku 还方便,不必付 Heroku 的 7USD 才能拥有证书。在几次部署并查文档之后,自己终于做了一个记录,把最基本的步骤都写到了一起,不用再来回点文档看了。

因为比较长,而且有代码块,就不全文复制了,想要看看的朋友可以点进去看看。用 Dokku 部署 Rails 应用简洁教程.

我听说过有的外国开发者在用 Dokku 部署后发生过一些性能问题,进而放弃了是用 Dokku, 不过我的 app 因为访问很少,还没遇到过,如果大伙用 Dokku 遇到了什么坑也欢迎聊聊。

dokku 的麻烦在于国内资源没法访问。

在国外还是很好用的。

还有建议 dockerfile 部署。可以把容器提及在 200M 以内,使用 buildpack 部署大概 1.5G,如果需要部署多个实例是非常不友好的。

感觉 dockerfile 会比较好一点😀

a112121788 回复

还是自己折腾吧,小 PAAS 不可靠。

pynix 回复

我没有研究过 Docker 的用法,看了一下还得花点时间才能看懂。请问您现在不用“BUILDPACK_VENDOR_URL”环境变量指向国内文件存储镜像这种加速方式了吗?

FinnG 回复

是这样的,但是还是很麻烦。

现在在国外我也用 dockerfile 的方式部署了,构建出来的镜像小很多。

以前用的 dokku 的 dockerfile 方式,因为 buildpack 在国内几乎用不起来

a112121788 回复

这个头一次听说,看起来也不错呀!

pynix 回复

研究了两天,感觉 Dockerfile 的写法,大家都不太一样,不知道哪种是最佳实践,坑比较少。早上找了一个 3 小时的教程直接学一下 Docker. 您的意思是,还是用 Dokku 的 Dockerfile 方式部署,不是纯用 Docker 部署,还是完全抛弃 Dokku 啦?

FinnG 回复

dokku dockerfile deployment

docker multistage build

主要是 dokku 无法很好的应用 二级目录来部署 如果想要实现 前后分离 并且 实现 www.xxxx.com 网站主域名 www.xxxx.com/api/v1 网站 api 的模式 还要对 nginx 做很多配置

njgzs 回复

你说的二级目录是二级域名吗?subdomain? 比如www.example.comapi.example.com?

还是说 routes.rb 里面配置的路由?namespace :api do ... end?

如果你说的是 subdomain 的话,只要在 DNS 解析指向 A 记录 IP, 然后dokku domains:set sample-app api.example.com就好了

如果你说的是 routes.rb 里配置的路由,这个就和 dokku 没啥关系了,在 Rails 里搞就好了。

或者你是写了两个 Rails App? 这个我就没想过了。

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