wp/docker-entrypoint.sh
changeset 1 79bc439970cd
parent 0 800e4a6ab128
child 3 d7dec707cbee
--- a/wp/docker-entrypoint.sh	Tue Apr 23 15:50:12 2019 +0200
+++ b/wp/docker-entrypoint.sh	Tue Apr 23 20:19:02 2019 +0200
@@ -27,6 +27,80 @@
 	head /dev/urandom | tr -dc A-Za-z0-9 | head -c 64
 }
 
+# allow any of these "Authentication Unique Keys and Salts." to be specified via
+# environment variables with a "WORDPRESS_" prefix (ie, "WORDPRESS_AUTH_KEY")
+uniqueEnvs=(
+	AUTH_KEY
+	SECURE_AUTH_KEY
+	LOGGED_IN_KEY
+	NONCE_KEY
+	AUTH_SALT
+	SECURE_AUTH_SALT
+	LOGGED_IN_SALT
+	NONCE_SALT
+)
+envs=(
+	WORDPRESS_DB_HOST
+	WORDPRESS_DB_USER
+	WORDPRESS_DB_PASSWORD
+	WORDPRESS_DB_NAME
+	WORDPRESS_DB_CHARSET
+	WORDPRESS_DB_COLLATE
+	"${uniqueEnvs[@]/#/WORDPRESS_}"
+	WORDPRESS_TABLE_PREFIX
+	WORDPRESS_DEBUG
+	WORDPRESS_CONFIG_EXTRA
+)
+haveConfig=
+for e in "${envs[@]}"; do
+	file_env "$e"
+	if [ -z "$haveConfig" ] && [ -n "${!e}" ]; then
+		haveConfig=1
+	fi
+done
+
+# linking backwards-compatibility
+if [ -n "${!MYSQL_ENV_MYSQL_*}" ]; then
+	haveConfig=1
+	# host defaults to "mysql" below if unspecified
+	: "${WORDPRESS_DB_USER:=${MYSQL_ENV_MYSQL_USER:-root}}"
+	if [ "$WORDPRESS_DB_USER" = 'root' ]; then
+		: "${WORDPRESS_DB_PASSWORD:=${MYSQL_ENV_MYSQL_ROOT_PASSWORD:-}}"
+	else
+		: "${WORDPRESS_DB_PASSWORD:=${MYSQL_ENV_MYSQL_PASSWORD:-}}"
+	fi
+	: "${WORDPRESS_DB_NAME:=${MYSQL_ENV_MYSQL_DATABASE:-}}"
+fi
+
+# linking backwards-compatibility
+if [ -n "${!MYSQL_ENV_MYSQL_*}" ]; then
+	haveConfig=1
+	# host defaults to "mysql" below if unspecified
+	: "${WORDPRESS_DB_USER:=${MYSQL_ENV_MYSQL_USER:-root}}"
+	if [ "$WORDPRESS_DB_USER" = 'root' ]; then
+		: "${WORDPRESS_DB_PASSWORD:=${MYSQL_ENV_MYSQL_ROOT_PASSWORD:-}}"
+	else
+		: "${WORDPRESS_DB_PASSWORD:=${MYSQL_ENV_MYSQL_PASSWORD:-}}"
+	fi
+	: "${WORDPRESS_DB_NAME:=${MYSQL_ENV_MYSQL_DATABASE:-}}"
+fi
+
+: "${WORDPRESS_DB_HOST:=mysql}"
+: "${WORDPRESS_DB_USER:=root}"
+: "${WORDPRESS_DB_PASSWORD:=}"
+: "${WORDPRESS_DB_NAME:=wordpress}"
+: "${WORDPRESS_DB_CHARSET:=utf8}"
+: "${WORDPRESS_DB_COLLATE:=}"
+
+# Wait 
+
+until mysql -h ${WORDPRESS_DB_HOST} -u ${WORDPRESS_DB_USER} -p${WORDPRESS_DB_PASSWORD} -e"quit" ${WORDPRESS_DB_NAME}; do
+  >&2 echo "Mysql is unavailable - sleeping"
+  sleep 1
+done
+
+>&2 echo "Mysql is up - proceeding"
+
 if [[ "$1" == apache2* ]] || [ "$1" == php-fpm ]; then
 	if [ "$(id -u)" = '0' ]; then
 		case "$1" in
@@ -49,59 +123,8 @@
 		group="$(id -g)"
 	fi
 
-	# allow any of these "Authentication Unique Keys and Salts." to be specified via
-	# environment variables with a "WORDPRESS_" prefix (ie, "WORDPRESS_AUTH_KEY")
-	uniqueEnvs=(
-		AUTH_KEY
-		SECURE_AUTH_KEY
-		LOGGED_IN_KEY
-		NONCE_KEY
-		AUTH_SALT
-		SECURE_AUTH_SALT
-		LOGGED_IN_SALT
-		NONCE_SALT
-	)
-	envs=(
-		WORDPRESS_DB_HOST
-		WORDPRESS_DB_USER
-		WORDPRESS_DB_PASSWORD
-		WORDPRESS_DB_NAME
-		WORDPRESS_DB_CHARSET
-		WORDPRESS_DB_COLLATE
-		"${uniqueEnvs[@]/#/WORDPRESS_}"
-		WORDPRESS_TABLE_PREFIX
-		WORDPRESS_DEBUG
-		WORDPRESS_CONFIG_EXTRA
-	)
-	haveConfig=
-	for e in "${envs[@]}"; do
-		file_env "$e"
-		if [ -z "$haveConfig" ] && [ -n "${!e}" ]; then
-			haveConfig=1
-		fi
-	done
-
-	# linking backwards-compatibility
-	if [ -n "${!MYSQL_ENV_MYSQL_*}" ]; then
-		haveConfig=1
-		# host defaults to "mysql" below if unspecified
-		: "${WORDPRESS_DB_USER:=${MYSQL_ENV_MYSQL_USER:-root}}"
-		if [ "$WORDPRESS_DB_USER" = 'root' ]; then
-			: "${WORDPRESS_DB_PASSWORD:=${MYSQL_ENV_MYSQL_ROOT_PASSWORD:-}}"
-		else
-			: "${WORDPRESS_DB_PASSWORD:=${MYSQL_ENV_MYSQL_PASSWORD:-}}"
-		fi
-		: "${WORDPRESS_DB_NAME:=${MYSQL_ENV_MYSQL_DATABASE:-}}"
-	fi
-
 	# TODO : create .env file if needed
 	if [ ! -e .env ] && [ "$haveConfig" ]; then
-		: "${WORDPRESS_DB_HOST:=mysql}"
-		: "${WORDPRESS_DB_USER:=root}"
-		: "${WORDPRESS_DB_PASSWORD:=}"
-		: "${WORDPRESS_DB_NAME:=wordpress}"
-		: "${WORDPRESS_DB_CHARSET:=utf8}"
-		: "${WORDPRESS_DB_COLLATE:=}"
 		cat > .env <<-EOF
 				DB_NAME=${WORDPRESS_DB_NAME}
 				DB_USER=${WORDPRESS_DB_USER}