File tree 2 files changed +58
-0
lines changed
2 files changed +58
-0
lines changed Original file line number Diff line number Diff line change 1
1
#! /bin/bash
2
2
set -eu
3
3
4
+ # usage: file_env VAR [DEFAULT]
5
+ # ie: file_env 'XYZ_DB_PASSWORD' 'example'
6
+ # (will allow for "$XYZ_DB_PASSWORD_FILE" to fill in the value of
7
+ # "$XYZ_DB_PASSWORD" from a file, especially for Docker's secrets feature)
8
+ file_env () {
9
+ local var=" $1 "
10
+ local fileVar=" ${var} _FILE"
11
+ local def=" ${2:- } "
12
+ if [ " ${! var:- } " ] && [ " ${! fileVar:- } " ]; then
13
+ echo >&2 " error: both $var and $fileVar are set (but are exclusive)"
14
+ exit 1
15
+ fi
16
+ local val=" $def "
17
+ if [ " ${! var:- } " ]; then
18
+ val=" ${! var} "
19
+ elif [ " ${! fileVar:- } " ]; then
20
+ val=" $( < " ${! fileVar} " ) "
21
+ fi
22
+ export " $var " =" $val "
23
+ unset " $fileVar "
24
+ }
25
+
4
26
# allow the container to be started with `--user`
5
27
if [[ " $1 " == rabbitmq* ]] && [ " $( id -u) " = ' 0' ]; then
6
28
if [ " $1 " = ' rabbitmq-server' ]; then
19
41
: " ${RABBITMQ_MANAGEMENT_SSL_CERTFILE:= $RABBITMQ_SSL_CERTFILE } "
20
42
: " ${RABBITMQ_MANAGEMENT_SSL_KEYFILE:= $RABBITMQ_SSL_KEYFILE } "
21
43
44
+ # Allowed env vars that will be read from mounted files (i.e. Docker Secrets):
45
+ fileEnvKeys=(
46
+ default_user
47
+ default_pass
48
+ )
49
+
22
50
# https://www.rabbitmq.com/configure.html
23
51
sslConfigKeys=(
24
52
cacertfile
@@ -61,6 +89,7 @@ declare -A configDefaults=(
61
89
haveConfig=
62
90
haveSslConfig=
63
91
haveManagementSslConfig=
92
+ for fileEnvKey in " ${fileEnvKeys[@]} " ; do file_env " RABBITMQ_${fileEnvKey^^} " ; done
64
93
for conf in " ${allConfigKeys[@]} " ; do
65
94
var=" RABBITMQ_${conf^^} "
66
95
val=" ${! var:- } "
Original file line number Diff line number Diff line change 1
1
#! /bin/bash
2
2
set -eu
3
3
4
+ # usage: file_env VAR [DEFAULT]
5
+ # ie: file_env 'XYZ_DB_PASSWORD' 'example'
6
+ # (will allow for "$XYZ_DB_PASSWORD_FILE" to fill in the value of
7
+ # "$XYZ_DB_PASSWORD" from a file, especially for Docker's secrets feature)
8
+ file_env () {
9
+ local var=" $1 "
10
+ local fileVar=" ${var} _FILE"
11
+ local def=" ${2:- } "
12
+ if [ " ${! var:- } " ] && [ " ${! fileVar:- } " ]; then
13
+ echo >&2 " error: both $var and $fileVar are set (but are exclusive)"
14
+ exit 1
15
+ fi
16
+ local val=" $def "
17
+ if [ " ${! var:- } " ]; then
18
+ val=" ${! var} "
19
+ elif [ " ${! fileVar:- } " ]; then
20
+ val=" $( < " ${! fileVar} " ) "
21
+ fi
22
+ export " $var " =" $val "
23
+ unset " $fileVar "
24
+ }
25
+
4
26
# allow the container to be started with `--user`
5
27
if [[ " $1 " == rabbitmq* ]] && [ " $( id -u) " = ' 0' ]; then
6
28
if [ " $1 " = ' rabbitmq-server' ]; then
19
41
: " ${RABBITMQ_MANAGEMENT_SSL_CERTFILE:= $RABBITMQ_SSL_CERTFILE } "
20
42
: " ${RABBITMQ_MANAGEMENT_SSL_KEYFILE:= $RABBITMQ_SSL_KEYFILE } "
21
43
44
+ # Allowed env vars that will be read from mounted files (i.e. Docker Secrets):
45
+ fileEnvKeys=(
46
+ default_user
47
+ default_pass
48
+ )
49
+
22
50
# https://www.rabbitmq.com/configure.html
23
51
sslConfigKeys=(
24
52
cacertfile
@@ -61,6 +89,7 @@ declare -A configDefaults=(
61
89
haveConfig=
62
90
haveSslConfig=
63
91
haveManagementSslConfig=
92
+ for fileEnvKey in " ${fileEnvKeys[@]} " ; do file_env " RABBITMQ_${fileEnvKey^^} " ; done
64
93
for conf in " ${allConfigKeys[@]} " ; do
65
94
var=" RABBITMQ_${conf^^} "
66
95
val=" ${! var:- } "
You can’t perform that action at this time.
0 commit comments