Skip to content

Commit 239bb25

Browse files
committed
update settings
1 parent 4736aa0 commit 239bb25

10 files changed

+720
-40
lines changed

9.2/alpine/docker-entrypoint.sh

Lines changed: 72 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,28 @@ if [ "$1" = 'postgres' ]; then
4141
file_env 'POSTGRES_INITDB_ARGS'
4242
eval "su-exec postgres initdb $POSTGRES_INITDB_ARGS"
4343

44+
authMethod=trust
45+
if [ "$POSTGRES_USERS" ]; then
46+
USERS_ARR=$(echo $POSTGRES_USERS | tr "|" "\n")
47+
for USER in $USERS_ARR
48+
do
49+
USER_PASSWORD=`echo $USER | cut -d: -f2`
50+
if [ "$USER_PASSWORD" ]; then
51+
authMethod=md5
52+
done
53+
fi
54+
4455
# check password first so we can output the warning before postgres
4556
# messes it up
4657
file_env 'POSTGRES_PASSWORD'
4758
if [ "$POSTGRES_PASSWORD" ]; then
4859
pass="PASSWORD '$POSTGRES_PASSWORD'"
4960
authMethod=md5
5061
else
51-
# The - option suppresses leading tabs but *not* spaces. :)
62+
pass=
63+
fi
64+
65+
if [ "$authMethod" == "trust" ]; then
5266
cat >&2 <<-'EOWARN'
5367
****************************************************
5468
WARNING: No password has been set for the database.
@@ -62,9 +76,6 @@ if [ "$1" = 'postgres' ]; then
6276
it in "docker run".
6377
****************************************************
6478
EOWARN
65-
66-
pass=
67-
authMethod=trust
6879
fi
6980

7081
{ echo; echo "host all all all $authMethod"; } | su-exec postgres tee -a "$PGDATA/pg_hba.conf" > /dev/null
@@ -99,6 +110,63 @@ if [ "$1" = 'postgres' ]; then
99110

100111
psql+=( --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" )
101112

113+
# If you want to create more than one user, please use that variable
114+
# Variable example: POSTGRES_USER="user1:user1pass|user2:user2pass|user3:user3password"
115+
if [ "$POSTGRES_USERS" ]; then
116+
USERS_ARR=$(echo $POSTGRES_USERS | tr "|" "\n")
117+
for USER in $USERS_ARR
118+
do
119+
USER_NAME=`echo $USER | cut -d: -f1`
120+
USER_PASSWORD=`echo $USER | cut -d: -f2`
121+
if [ "$USER_NAME" = 'postgres' ]; then
122+
op='ALTER'
123+
else
124+
op='CREATE'
125+
fi
126+
"${psql[@]}" --username postgres <<-EOSQL
127+
$op USER "$USER_NAME" WITH SUPERUSER PASSWORD $USER_PASSWORD ;
128+
EOSQL
129+
done
130+
fi
131+
132+
# If you want to create more than one database, please use that variable
133+
# Variable example: POSTGRES_DATABASES="database1:user1|database2:user2|database3:user3"
134+
if [ "$POSTGRES_DATABASES" ]; then
135+
DATABASES_ARR=$(echo $POSTGRES_DATABASES | tr "|" "\n")
136+
for DATABASE in $DATABASES_ARR
137+
do
138+
DATABASE_NAME=`echo $DATABASE | cut -d: -f1`
139+
DATABASE_OWNER=`echo $DATABASE | cut -d: -f2`
140+
if [ "$DATABASE_NAME" != 'postgres' ]; then
141+
if [ "$DATABASE_OWNER" ]; then
142+
"${psql[@]}" --username postgres <<-EOSQL
143+
CREATE DATABASE "$DATABASE_NAME owner $DATABASE_OWNER" ;
144+
EOSQL
145+
echo
146+
else
147+
"${psql[@]}" --username postgres <<-EOSQL
148+
CREATE DATABASE "$DATABASE_NAME" ;
149+
EOSQL
150+
echo
151+
fi
152+
fi
153+
done
154+
fi
155+
156+
# If you want to set up initial postgresql.conf parameters, please use that variable
157+
# Variable example: POSTGRES_CONFIGS="work_mem:15MB|fsync:off|full_page_writes:off"
158+
if [ "$POSTGRES_CONFIGS" ]; then
159+
CONFIGS_ARR=$(echo $POSTGRES_CONFIGS | tr "|" "\n")
160+
for CONFIG in $CONFIGS_ARR
161+
do
162+
CONFIG_NAME=`echo $CONFIG | cut -d: -f1`
163+
CONFIG_VALUE=`echo $CONFIG | cut -d: -f2`
164+
"${psql[@]}" --username postgres <<-EOSQL
165+
ALTER SYSTEM SET $CONFIG_NAME = "$CONFIG_VALUE" ;
166+
EOSQL
167+
done
168+
fi
169+
102170
echo
103171
for f in /docker-entrypoint-initdb.d/*; do
104172
case "$f" in

9.2/docker-entrypoint.sh

Lines changed: 72 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,28 @@ if [ "$1" = 'postgres' ]; then
4141
file_env 'POSTGRES_INITDB_ARGS'
4242
eval "gosu postgres initdb $POSTGRES_INITDB_ARGS"
4343

44+
authMethod=trust
45+
if [ "$POSTGRES_USERS" ]; then
46+
USERS_ARR=$(echo $POSTGRES_USERS | tr "|" "\n")
47+
for USER in $USERS_ARR
48+
do
49+
USER_PASSWORD=`echo $USER | cut -d: -f2`
50+
if [ "$USER_PASSWORD" ]; then
51+
authMethod=md5
52+
done
53+
fi
54+
4455
# check password first so we can output the warning before postgres
4556
# messes it up
4657
file_env 'POSTGRES_PASSWORD'
4758
if [ "$POSTGRES_PASSWORD" ]; then
4859
pass="PASSWORD '$POSTGRES_PASSWORD'"
4960
authMethod=md5
5061
else
51-
# The - option suppresses leading tabs but *not* spaces. :)
62+
pass=
63+
fi
64+
65+
if [ "$authMethod" == "trust" ]; then
5266
cat >&2 <<-'EOWARN'
5367
****************************************************
5468
WARNING: No password has been set for the database.
@@ -62,9 +76,6 @@ if [ "$1" = 'postgres' ]; then
6276
it in "docker run".
6377
****************************************************
6478
EOWARN
65-
66-
pass=
67-
authMethod=trust
6879
fi
6980

7081
{ echo; echo "host all all all $authMethod"; } | gosu postgres tee -a "$PGDATA/pg_hba.conf" > /dev/null
@@ -99,6 +110,63 @@ if [ "$1" = 'postgres' ]; then
99110

100111
psql+=( --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" )
101112

113+
# If you want to create more than one user, please use that variable
114+
# Variable example: POSTGRES_USER="user1:user1pass|user2:user2pass|user3:user3password"
115+
if [ "$POSTGRES_USERS" ]; then
116+
USERS_ARR=$(echo $POSTGRES_USERS | tr "|" "\n")
117+
for USER in $USERS_ARR
118+
do
119+
USER_NAME=`echo $USER | cut -d: -f1`
120+
USER_PASSWORD=`echo $USER | cut -d: -f2`
121+
if [ "$USER_NAME" = 'postgres' ]; then
122+
op='ALTER'
123+
else
124+
op='CREATE'
125+
fi
126+
"${psql[@]}" --username postgres <<-EOSQL
127+
$op USER "$USER_NAME" WITH SUPERUSER PASSWORD $USER_PASSWORD ;
128+
EOSQL
129+
done
130+
fi
131+
132+
# If you want to create more than one database, please use that variable
133+
# Variable example: POSTGRES_DATABASES="database1:user1|database2:user2|database3:user3"
134+
if [ "$POSTGRES_DATABASES" ]; then
135+
DATABASES_ARR=$(echo $POSTGRES_DATABASES | tr "|" "\n")
136+
for DATABASE in $DATABASES_ARR
137+
do
138+
DATABASE_NAME=`echo $DATABASE | cut -d: -f1`
139+
DATABASE_OWNER=`echo $DATABASE | cut -d: -f2`
140+
if [ "$DATABASE_NAME" != 'postgres' ]; then
141+
if [ "$DATABASE_OWNER" ]; then
142+
"${psql[@]}" --username postgres <<-EOSQL
143+
CREATE DATABASE "$DATABASE_NAME owner $DATABASE_OWNER" ;
144+
EOSQL
145+
echo
146+
else
147+
"${psql[@]}" --username postgres <<-EOSQL
148+
CREATE DATABASE "$DATABASE_NAME" ;
149+
EOSQL
150+
echo
151+
fi
152+
fi
153+
done
154+
fi
155+
156+
# If you want to set up initial postgresql.conf parameters, please use that variable
157+
# Variable example: POSTGRES_CONFIGS="work_mem:15MB|fsync:off|full_page_writes:off"
158+
if [ "$POSTGRES_CONFIGS" ]; then
159+
CONFIGS_ARR=$(echo $POSTGRES_CONFIGS | tr "|" "\n")
160+
for CONFIG in $CONFIGS_ARR
161+
do
162+
CONFIG_NAME=`echo $CONFIG | cut -d: -f1`
163+
CONFIG_VALUE=`echo $CONFIG | cut -d: -f2`
164+
"${psql[@]}" --username postgres <<-EOSQL
165+
ALTER SYSTEM SET $CONFIG_NAME = "$CONFIG_VALUE" ;
166+
EOSQL
167+
done
168+
fi
169+
102170
echo
103171
for f in /docker-entrypoint-initdb.d/*; do
104172
case "$f" in

9.3/alpine/docker-entrypoint.sh

Lines changed: 72 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,28 @@ if [ "$1" = 'postgres' ]; then
4141
file_env 'POSTGRES_INITDB_ARGS'
4242
eval "su-exec postgres initdb $POSTGRES_INITDB_ARGS"
4343

44+
authMethod=trust
45+
if [ "$POSTGRES_USERS" ]; then
46+
USERS_ARR=$(echo $POSTGRES_USERS | tr "|" "\n")
47+
for USER in $USERS_ARR
48+
do
49+
USER_PASSWORD=`echo $USER | cut -d: -f2`
50+
if [ "$USER_PASSWORD" ]; then
51+
authMethod=md5
52+
done
53+
fi
54+
4455
# check password first so we can output the warning before postgres
4556
# messes it up
4657
file_env 'POSTGRES_PASSWORD'
4758
if [ "$POSTGRES_PASSWORD" ]; then
4859
pass="PASSWORD '$POSTGRES_PASSWORD'"
4960
authMethod=md5
5061
else
51-
# The - option suppresses leading tabs but *not* spaces. :)
62+
pass=
63+
fi
64+
65+
if [ "$authMethod" == "trust" ]; then
5266
cat >&2 <<-'EOWARN'
5367
****************************************************
5468
WARNING: No password has been set for the database.
@@ -62,9 +76,6 @@ if [ "$1" = 'postgres' ]; then
6276
it in "docker run".
6377
****************************************************
6478
EOWARN
65-
66-
pass=
67-
authMethod=trust
6879
fi
6980

7081
{ echo; echo "host all all all $authMethod"; } | su-exec postgres tee -a "$PGDATA/pg_hba.conf" > /dev/null
@@ -99,6 +110,63 @@ if [ "$1" = 'postgres' ]; then
99110

100111
psql+=( --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" )
101112

113+
# If you want to create more than one user, please use that variable
114+
# Variable example: POSTGRES_USER="user1:user1pass|user2:user2pass|user3:user3password"
115+
if [ "$POSTGRES_USERS" ]; then
116+
USERS_ARR=$(echo $POSTGRES_USERS | tr "|" "\n")
117+
for USER in $USERS_ARR
118+
do
119+
USER_NAME=`echo $USER | cut -d: -f1`
120+
USER_PASSWORD=`echo $USER | cut -d: -f2`
121+
if [ "$USER_NAME" = 'postgres' ]; then
122+
op='ALTER'
123+
else
124+
op='CREATE'
125+
fi
126+
"${psql[@]}" --username postgres <<-EOSQL
127+
$op USER "$USER_NAME" WITH SUPERUSER PASSWORD $USER_PASSWORD ;
128+
EOSQL
129+
done
130+
fi
131+
132+
# If you want to create more than one database, please use that variable
133+
# Variable example: POSTGRES_DATABASES="database1:user1|database2:user2|database3:user3"
134+
if [ "$POSTGRES_DATABASES" ]; then
135+
DATABASES_ARR=$(echo $POSTGRES_DATABASES | tr "|" "\n")
136+
for DATABASE in $DATABASES_ARR
137+
do
138+
DATABASE_NAME=`echo $DATABASE | cut -d: -f1`
139+
DATABASE_OWNER=`echo $DATABASE | cut -d: -f2`
140+
if [ "$DATABASE_NAME" != 'postgres' ]; then
141+
if [ "$DATABASE_OWNER" ]; then
142+
"${psql[@]}" --username postgres <<-EOSQL
143+
CREATE DATABASE "$DATABASE_NAME owner $DATABASE_OWNER" ;
144+
EOSQL
145+
echo
146+
else
147+
"${psql[@]}" --username postgres <<-EOSQL
148+
CREATE DATABASE "$DATABASE_NAME" ;
149+
EOSQL
150+
echo
151+
fi
152+
fi
153+
done
154+
fi
155+
156+
# If you want to set up initial postgresql.conf parameters, please use that variable
157+
# Variable example: POSTGRES_CONFIGS="work_mem:15MB|fsync:off|full_page_writes:off"
158+
if [ "$POSTGRES_CONFIGS" ]; then
159+
CONFIGS_ARR=$(echo $POSTGRES_CONFIGS | tr "|" "\n")
160+
for CONFIG in $CONFIGS_ARR
161+
do
162+
CONFIG_NAME=`echo $CONFIG | cut -d: -f1`
163+
CONFIG_VALUE=`echo $CONFIG | cut -d: -f2`
164+
"${psql[@]}" --username postgres <<-EOSQL
165+
ALTER SYSTEM SET $CONFIG_NAME = "$CONFIG_VALUE" ;
166+
EOSQL
167+
done
168+
fi
169+
102170
echo
103171
for f in /docker-entrypoint-initdb.d/*; do
104172
case "$f" in

0 commit comments

Comments
 (0)