1
+ #! /usr/bin/env bash
2
+ set -Eeo pipefail
3
+
4
+ source /usr/local/bin/upstream-docker-entrypoint.sh
5
+
6
+ # sync $POSTGRES_PASSWORD to supabase-specific roles
7
+ pg_sync_password () {
8
+ # PGPASSWORD is required for psql when authentication is required for 'local' connections via pg_hba.conf and is otherwise harmless
9
+ # e.g. when '--auth=md5' or '--auth-local=md5' is used in POSTGRES_INITDB_ARGS
10
+ export PGPASSWORD=" ${PGPASSWORD:- $POSTGRES_PASSWORD } "
11
+ docker_temp_server_start " $@ "
12
+
13
+ # alter the supabase_admin password
14
+ docker_process_sql << -'EOSQL '
15
+ \set pgpass `echo "$POSTGRES_PASSWORD"`
16
+ ALTER USER supabase_admin WITH PASSWORD :'pgpass';
17
+ EOSQL
18
+
19
+ # execute the roles SQL file using docker_process_sql
20
+ docker_process_sql -f /docker-entrypoint-initdb.d/init-scripts/99-roles.sql
21
+
22
+ docker_temp_server_stop
23
+ unset PGPASSWORD
24
+ }
25
+
26
+ _main () {
27
+ # if first arg looks like a flag, assume we want to run postgres server
28
+ if [ " ${1: 0: 1} " = ' -' ]; then
29
+ set -- postgres " $@ "
30
+ fi
31
+
32
+ if [ " $1 " = ' postgres' ] && ! _pg_want_help " $@ " ; then
33
+ docker_setup_env
34
+ # setup data directories and permissions (when run as root)
35
+ docker_create_db_directories
36
+ if [ " $( id -u) " = ' 0' ]; then
37
+ # then restart script as postgres user
38
+ exec gosu postgres " $BASH_SOURCE " " $@ "
39
+ fi
40
+
41
+ # only run initialization on an empty data directory
42
+ if [ -z " $DATABASE_ALREADY_EXISTS " ]; then
43
+ docker_verify_minimum_env
44
+
45
+ # check dir permissions to reduce likelihood of half-initialized database
46
+ ls /docker-entrypoint-initdb.d/ > /dev/null
47
+
48
+ docker_init_database_dir
49
+ pg_setup_hba_conf " $@ "
50
+
51
+ # PGPASSWORD is required for psql when authentication is required for 'local' connections via pg_hba.conf and is otherwise harmless
52
+ # e.g. when '--auth=md5' or '--auth-local=md5' is used in POSTGRES_INITDB_ARGS
53
+ export PGPASSWORD=" ${PGPASSWORD:- $POSTGRES_PASSWORD } "
54
+ docker_temp_server_start " $@ "
55
+
56
+ docker_setup_db
57
+ docker_process_init_files /docker-entrypoint-initdb.d/*
58
+
59
+ docker_temp_server_stop
60
+ unset PGPASSWORD
61
+
62
+ cat << -'EOM '
63
+
64
+ PostgreSQL init process complete; ready for start up.
65
+
66
+ EOM
67
+ else
68
+ cat << -'EOM '
69
+
70
+ PostgreSQL Database directory appears to contain a database; Skipping initialization
71
+
72
+ EOM
73
+ fi
74
+
75
+ pg_sync_password " $@ "
76
+ fi
77
+
78
+ exec " $@ "
79
+ }
80
+
81
+ if ! _is_sourced; then
82
+ _main " $@ "
83
+ fi
0 commit comments