wp/docker-entrypoint.sh
author ymh <ymh.work@gmail.com>
Tue, 23 Apr 2019 15:50:12 +0200
changeset 0 800e4a6ab128
child 1 79bc439970cd
permissions -rw-r--r--
First commit
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
#!/bin/bash
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
set -euo pipefail
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
# usage: file_env VAR [DEFAULT]
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
#    ie: file_env 'XYZ_DB_PASSWORD' 'example'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
# (will allow for "$XYZ_DB_PASSWORD_FILE" to fill in the value of
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
#  "$XYZ_DB_PASSWORD" from a file, especially for Docker's secrets feature)
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
file_env() {
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
	local var="$1"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
	local fileVar="${var}_FILE"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
	local def="${2:-}"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
	if [ "${!var:-}" ] && [ "${!fileVar:-}" ]; then
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
		echo >&2 "error: both $var and $fileVar are set (but are exclusive)"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
		exit 1
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
	fi
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
	local val="$def"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
	if [ "${!var:-}" ]; then
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
		val="${!var}"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
	elif [ "${!fileVar:-}" ]; then
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
		val="$(< "${!fileVar}")"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
	fi
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
	export "$var"="$val"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
	unset "$fileVar"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
}
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
generate_rnd() {
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
	head /dev/urandom | tr -dc A-Za-z0-9 | head -c 64
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
}
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
if [[ "$1" == apache2* ]] || [ "$1" == php-fpm ]; then
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
	if [ "$(id -u)" = '0' ]; then
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
		case "$1" in
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
			apache2*)
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
				user="${APACHE_RUN_USER:-www-data}"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
				group="${APACHE_RUN_GROUP:-www-data}"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
				# strip off any '#' symbol ('#1000' is valid syntax for Apache)
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
				pound='#'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
				user="${user#$pound}"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
				group="${group#$pound}"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
				;;
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
			*) # php-fpm
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
				user='www-data'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
				group='www-data'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
				;;
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
		esac
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
	else
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
		user="$(id -u)"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
		group="$(id -g)"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
	fi
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
	# allow any of these "Authentication Unique Keys and Salts." to be specified via
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
	# environment variables with a "WORDPRESS_" prefix (ie, "WORDPRESS_AUTH_KEY")
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
	uniqueEnvs=(
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
		AUTH_KEY
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
		SECURE_AUTH_KEY
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
		LOGGED_IN_KEY
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
		NONCE_KEY
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
		AUTH_SALT
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
		SECURE_AUTH_SALT
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
		LOGGED_IN_SALT
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
		NONCE_SALT
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
	)
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
	envs=(
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
		WORDPRESS_DB_HOST
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
		WORDPRESS_DB_USER
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
		WORDPRESS_DB_PASSWORD
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
		WORDPRESS_DB_NAME
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
		WORDPRESS_DB_CHARSET
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
		WORDPRESS_DB_COLLATE
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
		"${uniqueEnvs[@]/#/WORDPRESS_}"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
		WORDPRESS_TABLE_PREFIX
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
		WORDPRESS_DEBUG
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
		WORDPRESS_CONFIG_EXTRA
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
	)
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
	haveConfig=
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
	for e in "${envs[@]}"; do
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
		file_env "$e"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
		if [ -z "$haveConfig" ] && [ -n "${!e}" ]; then
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
			haveConfig=1
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
		fi
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
	done
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
	# linking backwards-compatibility
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
	if [ -n "${!MYSQL_ENV_MYSQL_*}" ]; then
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
		haveConfig=1
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
		# host defaults to "mysql" below if unspecified
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
		: "${WORDPRESS_DB_USER:=${MYSQL_ENV_MYSQL_USER:-root}}"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
		if [ "$WORDPRESS_DB_USER" = 'root' ]; then
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
			: "${WORDPRESS_DB_PASSWORD:=${MYSQL_ENV_MYSQL_ROOT_PASSWORD:-}}"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
		else
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
			: "${WORDPRESS_DB_PASSWORD:=${MYSQL_ENV_MYSQL_PASSWORD:-}}"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
		fi
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
		: "${WORDPRESS_DB_NAME:=${MYSQL_ENV_MYSQL_DATABASE:-}}"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
	fi
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
	# TODO : create .env file if needed
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
	if [ ! -e .env ] && [ "$haveConfig" ]; then
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
		: "${WORDPRESS_DB_HOST:=mysql}"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
		: "${WORDPRESS_DB_USER:=root}"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
		: "${WORDPRESS_DB_PASSWORD:=}"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
		: "${WORDPRESS_DB_NAME:=wordpress}"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
		: "${WORDPRESS_DB_CHARSET:=utf8}"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
		: "${WORDPRESS_DB_COLLATE:=}"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
		cat > .env <<-EOF
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
				DB_NAME=${WORDPRESS_DB_NAME}
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
				DB_USER=${WORDPRESS_DB_USER}
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
				DB_PASSWORD=${WORDPRESS_DB_PASSWORD}
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
				DB_HOST=db:3306
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
				WP_HOME=http://localhost:8080
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
				
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
				WP_SITEURL=\${WP_HOME}/wp
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
				WP_ENV=development
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
				
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
				AUTH_KEY='$(generate_rnd)'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
				SECURE_AUTH_KEY='$(generate_rnd)'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
				LOGGED_IN_KEY='$(generate_rnd)'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
				NONCE_KEY='$(generate_rnd)'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
				AUTH_SALT='$(generate_rnd)'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
				SECURE_AUTH_SALT='$(generate_rnd)'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
				LOGGED_IN_SALT='$(generate_rnd)'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
				NONCE_SALT='$(generate_rnd)'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
			EOF
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
			chown "$user:$group" .env
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
		if ! TERM=dumb php -- <<'EOPHP'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
<?php
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
// database might not exist, so let's try creating it (just to be safe)
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
$stderr = fopen('php://stderr', 'w');
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
// https://codex.wordpress.org/Editing_wp-config.php#MySQL_Alternate_Port
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
//   "hostname:port"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
// https://codex.wordpress.org/Editing_wp-config.php#MySQL_Sockets_or_Pipes
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
//   "hostname:unix-socket-path"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
list($host, $socket) = explode(':', getenv('WORDPRESS_DB_HOST'), 2);
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
$port = 0;
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
if (is_numeric($socket)) {
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
	$port = (int) $socket;
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
	$socket = null;
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
}
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
$user = getenv('WORDPRESS_DB_USER');
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
$pass = getenv('WORDPRESS_DB_PASSWORD');
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
$dbName = getenv('WORDPRESS_DB_NAME');
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
$maxTries = 10;
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
do {
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
	$mysql = new mysqli($host, $user, $pass, '', $port, $socket);
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
	if ($mysql->connect_error) {
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
		fwrite($stderr, "\n" . 'MySQL Connection Error: (' . $mysql->connect_errno . ') ' . $mysql->connect_error . "\n");
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
		--$maxTries;
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
		if ($maxTries <= 0) {
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
			exit(1);
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
		}
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
		sleep(3);
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
	}
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
} while ($mysql->connect_error);
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
if (!$mysql->query('CREATE DATABASE IF NOT EXISTS `' . $mysql->real_escape_string($dbName) . '`')) {
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
	fwrite($stderr, "\n" . 'MySQL "CREATE DATABASE" Error: ' . $mysql->error . "\n");
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
	$mysql->close();
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
	exit(1);
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
}
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
$mysql->close();
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
EOPHP
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
		then
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
			echo >&2
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
			echo >&2 "WARNING: unable to establish a database connection to '$WORDPRESS_DB_HOST'"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
			echo >&2 '  continuing anyways (which might have unexpected results)'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
			echo >&2
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
		fi
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
	fi
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
	# now that we're definitely done writing configuration, let's clear out the relevant envrionment variables (so that stray "phpinfo()" calls don't leak secrets from our code)
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
	for e in "${envs[@]}"; do
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
		unset "$e"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
	done
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
fi
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
#lauch composer if needed
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
if [ ! -d vendor ]; then
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
	composer install
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
fi
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
# first arg is `-f` or `--some-option`
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
if [ "${1#-}" != "$1" ]; then
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
	set -- composer exec wp "$@"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
fi
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
# if our command is a valid wp-cli subcommand, let's invoke it through wp-cli instead
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
# (this allows for "docker run wordpress:cli help", etc)
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
if composer exec wp --path=/dev/null help "$1" > /dev/null 2>&1; then
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
	set -- composer exec wp "$@"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
fi
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
exec "$@"