--- 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}