1
1
#! /usr/bin/env bash
2
2
3
3
set -o pipefail
4
- set -eux
5
- #
6
- POSTGRES_USER=${POSTGRES_USER:- postgres}
7
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:- password}
8
- PWFILE=/tmp/postgres_password
9
- PG_DATA=${PG_DATA:-/ var/ lib/ postgresql/ main}
10
- POSTGRES_LOGS_DIR=/var/log/postgresql
11
- POSTGRES_LOGS_FILE=/var/log/postgresql/postgresql.log
12
- POSTGRES_CLUSTER=${POSTGRES_CLUSTER:- genera}
13
- POSTGRES_CONFIG=${POSTGRES_CONFIG:-/ etc/ postgresql/ postgresql.conf}
4
+ set -eu
14
5
15
6
function setup_environment() {
16
7
@@ -29,26 +20,63 @@ function setup_environment() {
29
20
chown -R postgres:postgres " ${POSTGRES_LOGS_FILE} "
30
21
fi
31
22
32
- cat <<< " ${POSTGRES_PASSWORD }" > " ${PWFILE } "
23
+ cat <<< " ${POSTGRES_DEFAULT_PASSWORD }" > " ${PW_FILE } "
33
24
34
25
return 0
35
26
36
27
}
37
28
38
29
function initialize_database() {
39
30
40
- /usr/lib/postgresql/14/bin/initdb --pgdata=" ${PG_DATA} " --username=" ${POSTGRES_USER } " --pwfile=" ${PWFILE } " --data-checksums
31
+ /usr/lib/postgresql/14/bin/initdb --pgdata=" ${PG_DATA} " --username=" ${POSTGRES_DEFAULT_USER } " --pwfile=" ${PW_FILE } " --data-checksums
41
32
42
- rm " ${PWFILE } "
33
+ rm " ${PW_FILE } "
43
34
44
35
return 0
45
36
46
37
}
47
38
39
+ # Used mainly for docker tests/healthcheck user but also to setup initial users
40
+ function setupUsers() {
41
+
42
+ temp_sql=$( mktemp /tmp/user_update.XXXXXX)
43
+
44
+ if [[ " ${ADMIN_USER} " != nil && " ${ADMIN_PASSWORD} " != nil && " ${POSTGRES_DATABASE} " != nil ]]; then
45
+ /usr/lib/postgresql/14/bin/pg_ctl -D " ${PG_DATA} " -l ${POSTGRES_LOGS_FILE} start
46
+ # create grants for these users for database x
47
+ /usr/lib/postgresql/14/bin/createuser --superuser " ${ADMIN_USER} "
48
+ /usr/lib/postgresql/14/bin/createdb " ${POSTGRES_DATABASE} "
49
+
50
+ cat <<< " ALTER USER ${ADMIN_USER} PASSWORD '${ADMIN_PASSWORD}'" > " ${temp_sql} "
51
+ psql -a -q -f " ${temp_sql} "
52
+ /usr/lib/postgresql/14/bin/pg_ctl -D " ${PG_DATA} " stop
53
+ rm " ${temp_sql} "
54
+ fi
55
+
56
+ return 0
57
+ }
58
+
59
+ # postgres settings/configs/directories
60
+ POSTGRES_DEFAULT_USER=${POSTGRES_DEFAULT_USER:- postgres}
61
+ POSTGRES_DEFAULT_PASSWORD=${POSTGRES_DEFAULT_PASSWORD:- password}
62
+ PW_FILE=/tmp/postgres_password
63
+ PG_DATA=${PG_DATA:-/ var/ lib/ postgresql/ main}
64
+ POSTGRES_LOGS_DIR=/var/log/postgresql
65
+ POSTGRES_LOGS_FILE=/var/log/postgresql/postgresql.log
66
+ POSTGRES_CLUSTER=${POSTGRES_CLUSTER:- genera}
67
+ POSTGRES_CONFIG=${POSTGRES_CONFIG:-/ etc/ postgresql/ postgresql.conf}
68
+
69
+ # additional users/databases
70
+ POSTGRES_DATABASE=${POSTGRES_DATABASE:- nil}
71
+ ADMIN_USER=${ADMIN_USER:- nil}
72
+ ADMIN_PASSWORD=${ADMIN_PASSWORD:- nil}
73
+ POSTGRES_HEALTHCHECK_USER=${POSTGRES_HEALTHCHECK_USER:- healthcheck}
74
+ POSTGRES_HEALTHCHECK_PASSWD=${MYSQL_HEALTHCHECK_PASSWD:- nil}
75
+
48
76
setup_environment || exit 1
49
77
initialize_database || exit 1
78
+ setupUsers || exit 1
50
79
51
- # Working
52
80
eval " exec /usr/lib/postgresql/14/bin/postgres -D ${PG_DATA} -c config_file=/etc/postgresql/postgresql.conf"
53
81
54
82
# What i should get working...maybe?
0 commit comments