8000 update settings · docker-library/postgres@239bb25 · GitHub
[go: up one dir, main page]

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 239bb25

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

File tree

10 files changed

+720
-40
lines changed

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)
0