one-click-apps/public/v4/apps/supabase-postgres.yml

99 lines
4.2 KiB
YAML

captainVersion: 4
services:
$$cap_appname-db:
image: bitnami/supabase-postgres:$$cap_app_version
volumes:
- $$cap_appname-db-persistence:/bitnami/postgresql
restart: always
environment:
POSTGRES_USER: $$cap_pg_user
POSTGRES_DB: $$cap_pg_db
POSTGRES_PASSWORD: $$cap_pg_pass
POSTGRES_PORT_NUMBER: $$cap_pg_port
POSTGRES_INITDB_ARGS: $$cap_pg_initdb_args
POSTGRES_REPLICATION_USER: $$cap_pg_repl_user
POSTGRES_REPLICATION_MODE: $$cap_pg_repl_mode
POSTGRES_REPLICATION_PASSWORD: $$cap_pg_repl_pass
POSTGRES_MASTER_HOST: $$cap_pg_master_host
POSTGRES_MASTER_PORT_NUMBER: $$cap_pg_master_port
POSTGRES_NUM_SYNCHRONOUS_REPLICAS: $$cap_pg_num_sync_repl
POSTGRES_SYNCHRONOUS_COMMIT_MODE: $$cap_pg_sync_commit_mode
caproverExtra:
notExposeAsWebApp: 'true'
caproverOneClickApp:
variables:
- id: $$cap_app_version
label: Postgres Version
defaultValue: '15.1.0'
description: Check out their Docker page for the valid tags https://hub.docker.com/r/bitnami/supabase-postgres/tags
validRegex: /^([^\s^\/])+$/
- id: $$cap_pg_user
label: Postgres Username
defaultValue: 'postgres'
validRegex: /.{1,}/
- id: $$cap_pg_db
label: Postgres Default Database
defaultValue: 'postgres'
validRegex: /.{1,}/
- id: $$cap_pg_pass
label: Postgres Password
defaultValue: $$cap_gen_random_hex(32)
validRegex: /.{1,}/
- id: $$cap_pg_port
label: Postgres Port
defaultValue: '5432'
validRegex: /\d+/
- id: $$cap_pg_initdb_args
label: "OPTIONAL: Arguments for 'postgres initdb'"
description: For example, --data-checksums
- id: $$cap_pg_repl_user
label: Postgres Replication User
description: 'The replication user created on the master on first run. No defaults.'
- id: $$cap_pg_repl_mode
label: Postgres Replication Mode
description: 'Replication mode. Possible values `master` or `slave`. No defaults.'
validRegex: /^(master|slave|)$/
- id: $$cap_pg_repl_pass
label: Postgres Replication Password
description: 'The replication users password. No defaults.'
- id: $$cap_pg_master_host
label: Postgres Master Host
description: 'Hostname/IP of replication master (slave parameter). No defaults.'
- id: $$cap_pg_master_port
label: Postgres Master Port
description: 'Server port of the replication master (slave parameter). Defaults to 5432.'
- id: $$cap_pg_num_sync_repl
label: Postgres number of synchronous replica
description: 'Number of replicas that will enable synchronous replication'
- id: $$cap_pg_sync_commit_mode
label: Postgres Replication Commit Mode
description: 'Type of synchronous commit. The available options are: `on`, `remote_apply`, `remote_write`, `local` and `off`. The default value is on.'
defaultValue: 'on'
validRegex: /^(on|remote_apply|remote_write|local|off|)$/
instructions:
start: >-
Postgres + goodies = Supabase Postgres
Unmodified Postgres with some useful plugins.
Why use it over the official postgres image?
It is an unmodified Postgres image with convenient plugins added.
It's optimized for replication, and provides popular extensions like PostGIS, pgRouting, pgTAP, and more for enhanced functionality. Ideal for those who prefer an unaltered Postgres experience with added features.
end: "Supabase (Postgres) is deployed and available as srv-captain--$$cap_appname-db:5432 to other apps. For example with NodeJS: 'const client = new Client({ user: 'cap_pg_user', host: 'srv-captain--$$cap_appname', database: 'cap_pg_db', password: '********', port: 5432})'"
displayName: Supabase PostgreSQL
isOfficial: true
description: Supabase makes it easy to use Postgres.
documentation: Taken from https://hub.docker.com/r/bitnami/supabase-postgres