首页 > 解决方案 > 根据用户创建在 Heroku 上自动部署应用

问题描述

我有一个在 Heroku 上使用 Postgres 的多租户 Django 应用程序。有没有办法根据在我的应用程序上创建新用户的时间实际实例化一个新的 dyno/db/subdomain?

标签: djangoherokuheroku-postgres

解决方案


这在很大程度上取决于您的多租户是如何实现的。

如果您尚未在应用程序中构建多租户,我鼓励您查看类似的东西django-tenants,它添加了基于子域和 PostgreSQL 模式的多租户支持。如果这不合适,您可以探索其他类似的库

一旦你设置好了django-tenants,在 Django 方面就没有什么可做的了。这一切都是配置。对已配置子域的请求将被路由到适当的共享或租户数据库架构。

但是这些请求必须提交到您的应用程序中。这就是 DNS 的用武之地,理想情况下使用通配符子域。

首先,在 Heroku 端添加*.your-domain.tld到您应用的域:

heroku domains:add "*.your-domain.tld"

接下来,为您的 DNS 提供商添加通配符 CNAME 条目¹。如何做到这一点的确切机制因供应商而异。您已经说过您正在迁移到 DNSimple,并且看起来他们支持使用*.


¹不幸的是, GoDaddy 等一些 DNS 提供商不支持通配符 CNAME 条目。在这种情况下,您必须单独创建每个 CNAME 记录。


推荐阅读