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

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

以前在自己的内网树莓派上部署过几回 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? 这个我就没想过了.

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