11#! /bin/bash
2- set -e
2+ set -eu
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+ }
325
426if [[ " $1 " == apache2* ]] || [ " $1 " == php-fpm ]; then
5- : " ${ WORDPRESS_DB_HOST:= mysql} "
27+ file_env ' WORDPRESS_DB_HOST' ' mysql'
628 # if we're linked to MySQL and thus have credentials already, let's use them
7- : ${ WORDPRESS_DB_USER:= ${MYSQL_ENV_MYSQL_USER:- root} }
29+ file_env ' WORDPRESS_DB_USER' " ${MYSQL_ENV_MYSQL_USER:- root} "
830 if [ " $WORDPRESS_DB_USER " = ' root' ]; then
9- : ${WORDPRESS_DB_PASSWORD:= $MYSQL_ENV_MYSQL_ROOT_PASSWORD }
31+ file_env ' WORDPRESS_DB_PASSWORD' " ${MYSQL_ENV_MYSQL_ROOT_PASSWORD:- } "
32+ else
33+ file_env ' WORDPRESS_DB_PASSWORD' " ${MYSQL_ENV_MYSQL_PASSWORD:- } "
1034 fi
11- : ${WORDPRESS_DB_PASSWORD:= $MYSQL_ENV_MYSQL_PASSWORD }
12- : ${WORDPRESS_DB_NAME:= ${MYSQL_ENV_MYSQL_DATABASE:- wordpress} }
13-
35+ file_env ' WORDPRESS_DB_NAME' " ${MYSQL_ENV_MYSQL_DATABASE:- wordpress} "
1436 if [ -z " $WORDPRESS_DB_PASSWORD " ]; then
1537 echo >&2 ' error: missing required WORDPRESS_DB_PASSWORD environment variable'
1638 echo >&2 ' Did you forget to -e WORDPRESS_DB_PASSWORD=... ?'
@@ -105,9 +127,10 @@ EOPHP
105127 NONCE_SALT
106128 )
107129 for unique in " ${UNIQUES[@]} " ; do
108- eval unique_value=\$ WORDPRESS_$unique
109- if [ " $unique_value " ]; then
110- set_config " $unique " " $unique_value "
130+ uniqVar=" WORDPRESS_$unique "
131+ file_env " $uniqVar "
132+ if [ " ${! uniqVar} " ]; then
133+ set_config " $unique " " ${! uniqVar} "
111134 else
112135 # if not specified, let's generate a random value
113136 current_set=" $( sed -rn -e " s/define\((([\'\" ])$unique \2\s*,\s*)(['\" ])(.*)\3\);/\4/p" wp-config.php) "
@@ -117,10 +140,12 @@ EOPHP
117140 fi
118141 done
119142
143+ file_env ' WORDPRESS_TABLE_PREFIX'
120144 if [ " $WORDPRESS_TABLE_PREFIX " ]; then
121145 set_config ' $table_prefix' " $WORDPRESS_TABLE_PREFIX "
122146 fi
123147
148+ file_env ' WORDPRESS_DEBUG'
124149 if [ " $WORDPRESS_DEBUG " ]; then
125150 set_config ' WP_DEBUG' 1 boolean
126151 fi
0 commit comments