Stack Docker completo in infra/supabase/docker/ (vendored da supabase/supabase) per svincolare dev e produzione da Lovable Cloud. Include override di produzione che non espone porte pubblicamente e disattiva i servizi non usati da CrAPP (Realtime, Storage, imgproxy, Edge Functions, pooler), un Caddyfile con routing /api/* per un solo dominio, e i template .env per app e stack. Forzo inoltre il preset Nitro a node-server in vite.config.ts, dato che il default sarebbe Cloudflare Workers.
31 lines
1.1 KiB
Elixir
31 lines
1.1 KiB
Elixir
{:ok, _} = Application.ensure_all_started(:supavisor)
|
|
|
|
{:ok, version} =
|
|
case Supavisor.Repo.query!("select version()") do
|
|
%{rows: [[ver]]} -> Supavisor.Helpers.parse_pg_version(ver)
|
|
_ -> nil
|
|
end
|
|
|
|
params = %{
|
|
"external_id" => System.get_env("POOLER_TENANT_ID"),
|
|
"db_host" => System.get_env("POSTGRES_HOST") || "db",
|
|
"db_port" => System.get_env("POSTGRES_PORT"),
|
|
"db_database" => System.get_env("POSTGRES_DB"),
|
|
"require_user" => false,
|
|
"auth_query" => "SELECT * FROM pgbouncer.get_auth($1)",
|
|
"default_max_clients" => System.get_env("POOLER_MAX_CLIENT_CONN"),
|
|
"default_pool_size" => System.get_env("POOLER_DEFAULT_POOL_SIZE"),
|
|
"default_parameter_status" => %{"server_version" => version},
|
|
"users" => [%{
|
|
"db_user" => "pgbouncer",
|
|
"db_password" => System.get_env("POSTGRES_PASSWORD"),
|
|
"mode_type" => System.get_env("POOLER_POOL_MODE"),
|
|
"pool_size" => System.get_env("POOLER_DEFAULT_POOL_SIZE"),
|
|
"is_manager" => true
|
|
}]
|
|
}
|
|
|
|
if !Supavisor.Tenants.get_tenant_by_external_id(params["external_id"]) do
|
|
{:ok, _} = Supavisor.Tenants.create_tenant(params)
|
|
end
|