目前,我们仅将其作为 docker 镜像提供。 我们可能希望这些作为最低限度的构建、版本和存储的工件:
现在:
下一个:
推荐:
@kiwicopple这将是一个仅安装了实时应用程序的 Ubuntu 映像-您会直接公开实时端口吗? 还是我们仍然想要单条路线的 kong? (考虑 apikeys/速率限制等)
@soedirgo刚刚与保罗交谈过,这里的第一步是实际上只是将实时应用程序的构建和发布自动化为二进制文件
所以可以暂时忘记所有虚拟机的东西和数字海洋(尽管这可能是下一步)
我们需要的是,每次有人标记一个 release时,github 都会为每个环境构建应用程序(对于初学者来说,ubuntu 和 osx 就可以了),并创建一个带有二进制文件的版本(例如:https://github.com/ setvisible/DownZemAll/releases)
这都可以通过 github 操作来实现: https ://github.com/features/actions
如果你想从这个 repo 开始并在你自己的 fork 上进行试验——那么当你启动并运行它时,我们可以将这些操作合并回这个 repo
这看起来像是一个很好的入门模板: https ://github.com/actions/create-release
您应该首先在您自己的操作系统上构建实时应用程序,以了解需要哪些依赖项(混合等),然后这是一个如何使用 ansible 构建实时应用程序的示例,因此可以复制过来一些步骤: https ://github.com/supabase/kps/blob/master/ansible/tasks/setup-supabase.yml
也只是为了清楚起见,我们现在只想构建实时服务器,所以在这个文件夹中找到的所有内容: https ://github.com/supbase/realtime/tree/master/server
@soedirgo这个现在完成了吗? 什么都没有了?
不过,在 3 和 4 上的工作应该在今天完成
都好! 慢慢来,如果你遇到困难,请告诉我
Ack,好吧,这比我想象的要难。 (我应该停止说“今天”或“本周”)
我做了什么:
DB_HOST
、 DB_PASSWORD
、 DB_PORT
等的用户变量传递给 ansibleDB_HOST
连接到数据库(同样,在构建器中)阻滞剂:
快速提问 - 这部分对我来说很重要:
通过 ansible 构建 Phoenix 应用(在构建器中,而不是最终图像)
这是否意味着您正在 DO 映像上构建 phoenix 应用程序? 例如 - 安装 elixir/mix 等,然后运行构建?
对于这个问题:
实时通常与数据库在同一台机器上吗?
不 - 这是一个独立的服务器,所以它只会运行realtime
并连接到env_vars
指定的单独数据库
这是否意味着您正在 DO 映像上构建 phoenix 应用程序? 例如 - 安装 elixir/mix 等,然后运行构建?
是的,我可以从发行版中获取二进制文件,但不确定这是否会导致不兼容问题。 (主要是复制它是如何使用 Docker 完成的)
只需获取二进制文件! 减少表面积。 如果我们切换 docker 做同样的事情可能会更好 - 然后我们可以使用一个纤细的图像
嘿@soedirgo这是一个非常好的 systemctl 介绍和备忘单 - 我们用来管理 systemd 的工具: https ://www.linode.com/docs/quick-answers/linux-essentials/introduction-to-systemctl/
这是来自 KPS 的实时 systemctl 文件: https ://github.com/supabase/kps/blob/master/ansible/files/supabase.service.j2
关于 env vars 的问题,上面的文件还显示了如何指定将 env vars 放入哪个文件,因此可以是特定于应用程序的
关于如何在运行/配置时传递它们,我们使用云配置
向下滚动并找到write_files
指令,我们基本上只是按照上面的 .j2 文件将环境变量的字符串复制到/etc/supabase.env
中
Gotcha,会深入了解那些!
关于这一点,我应该使用什么样的硬化? 只是最低限度。 我知道 postgres 使用 UFW 来阻止除 22 和 5432 之外的任何内容。
@dragarcia可能从 AWS 和 DO 列表过程中学到了一些东西——我看到一件事说确保你不使用标准化默认值来获取安全种子/密码等。
是的,让我为我们目前所处的市场记录一份清单,稍后在此分享。
太棒了,一切都在一个地方。 谢谢!
最有用的评论
@soedirgo刚刚与保罗交谈过,这里的第一步是实际上只是将实时应用程序的构建和发布自动化为二进制文件
所以可以暂时忘记所有虚拟机的东西和数字海洋(尽管这可能是下一步)
我们需要的是,每次有人标记一个 release时,github 都会为每个环境构建应用程序(对于初学者来说,ubuntu 和 osx 就可以了),并创建一个带有二进制文件的版本(例如:https://github.com/ setvisible/DownZemAll/releases)
这都可以通过 github 操作来实现: https ://github.com/features/actions
如果你想从这个 repo 开始并在你自己的 fork 上进行试验——那么当你启动并运行它时,我们可以将这些操作合并回这个 repo
这看起来像是一个很好的入门模板: https ://github.com/actions/create-release
您应该首先在您自己的操作系统上构建实时应用程序,以了解需要哪些依赖项(混合等),然后这是一个如何使用 ansible 构建实时应用程序的示例,因此可以复制过来一些步骤: https ://github.com/supabase/kps/blob/master/ansible/tasks/setup-supabase.yml