-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpostgres-init.sh
More file actions
executable file
·41 lines (37 loc) · 893 Bytes
/
Copy pathpostgres-init.sh
File metadata and controls
executable file
·41 lines (37 loc) · 893 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/env bash
set -e
# This script runs only on first DB initialization (empty data volume).
# It creates an application database and user using env vars.
psql \
-v ON_ERROR_STOP=1 \
--username "$POSTGRES_USER" \
--dbname "postgres" \
--set=app_db_name="$APP_DB_NAME" \
--set=app_db_user="$APP_DB_USER" \
--set=app_db_password="$APP_DB_PASSWORD" \
<<-'EOSQL'
SELECT format(
'CREATE ROLE %I LOGIN PASSWORD %L',
:'app_db_user',
:'app_db_password'
)
WHERE NOT EXISTS (
SELECT 1 FROM pg_roles WHERE rolname = :'app_db_user'
)
\gexec
SELECT format(
'CREATE DATABASE %I OWNER %I',
:'app_db_name',
:'app_db_user'
)
WHERE NOT EXISTS (
SELECT 1 FROM pg_database WHERE datname = :'app_db_name'
)
\gexec
SELECT format(
'GRANT ALL PRIVILEGES ON DATABASE %I TO %I',
:'app_db_name',
:'app_db_user'
)
\gexec
EOSQL