wp/docker-entrypoint.sh
author ymh <ymh.work@gmail.com>
Wed, 24 Apr 2019 16:12:58 +0200
changeset 7 3ecf94cab400
parent 6 36381334b11e
permissions -rw-r--r--
Change .net to .test
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
1
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    30
# allow any of these "Authentication Unique Keys and Salts." to be specified via
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    31
# environment variables with a "WORDPRESS_" prefix (ie, "WORDPRESS_AUTH_KEY")
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    32
uniqueEnvs=(
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    33
	AUTH_KEY
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    34
	SECURE_AUTH_KEY
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    35
	LOGGED_IN_KEY
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    36
	NONCE_KEY
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    37
	AUTH_SALT
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    38
	SECURE_AUTH_SALT
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    39
	LOGGED_IN_SALT
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    40
	NONCE_SALT
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    41
)
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    42
envs=(
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    43
	WORDPRESS_DB_HOST
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    44
	WORDPRESS_DB_USER
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    45
	WORDPRESS_DB_PASSWORD
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    46
	WORDPRESS_DB_NAME
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    47
	WORDPRESS_DB_CHARSET
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    48
	WORDPRESS_DB_COLLATE
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    49
	"${uniqueEnvs[@]/#/WORDPRESS_}"
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    50
	WORDPRESS_TABLE_PREFIX
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    51
	WORDPRESS_DEBUG
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    52
	WORDPRESS_CONFIG_EXTRA
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    53
)
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    54
haveConfig=
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    55
for e in "${envs[@]}"; do
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    56
	file_env "$e"
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    57
	if [ -z "$haveConfig" ] && [ -n "${!e}" ]; then
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    58
		haveConfig=1
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    59
	fi
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    60
done
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    61
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    62
# linking backwards-compatibility
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    63
if [ -n "${!MYSQL_ENV_MYSQL_*}" ]; then
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    64
	haveConfig=1
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    65
	# host defaults to "mysql" below if unspecified
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    66
	: "${WORDPRESS_DB_USER:=${MYSQL_ENV_MYSQL_USER:-root}}"
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    67
	if [ "$WORDPRESS_DB_USER" = 'root' ]; then
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    68
		: "${WORDPRESS_DB_PASSWORD:=${MYSQL_ENV_MYSQL_ROOT_PASSWORD:-}}"
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    69
	else
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    70
		: "${WORDPRESS_DB_PASSWORD:=${MYSQL_ENV_MYSQL_PASSWORD:-}}"
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    71
	fi
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    72
	: "${WORDPRESS_DB_NAME:=${MYSQL_ENV_MYSQL_DATABASE:-}}"
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    73
fi
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    74
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    75
# linking backwards-compatibility
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    76
if [ -n "${!MYSQL_ENV_MYSQL_*}" ]; then
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    77
	haveConfig=1
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    78
	# host defaults to "mysql" below if unspecified
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    79
	: "${WORDPRESS_DB_USER:=${MYSQL_ENV_MYSQL_USER:-root}}"
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    80
	if [ "$WORDPRESS_DB_USER" = 'root' ]; then
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    81
		: "${WORDPRESS_DB_PASSWORD:=${MYSQL_ENV_MYSQL_ROOT_PASSWORD:-}}"
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    82
	else
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    83
		: "${WORDPRESS_DB_PASSWORD:=${MYSQL_ENV_MYSQL_PASSWORD:-}}"
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    84
	fi
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    85
	: "${WORDPRESS_DB_NAME:=${MYSQL_ENV_MYSQL_DATABASE:-}}"
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    86
fi
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    87
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    88
: "${WORDPRESS_DB_HOST:=mysql}"
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    89
: "${WORDPRESS_DB_USER:=root}"
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    90
: "${WORDPRESS_DB_PASSWORD:=}"
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    91
: "${WORDPRESS_DB_NAME:=wordpress}"
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    92
: "${WORDPRESS_DB_CHARSET:=utf8}"
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    93
: "${WORDPRESS_DB_COLLATE:=}"
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    94
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    95
# Wait 
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    96
3
d7dec707cbee Add silent flag to mysql cli command
ymh <ymh.work@gmail.com>
parents: 1
diff changeset
    97
until mysql -s -h ${WORDPRESS_DB_HOST} -u ${WORDPRESS_DB_USER} -p${WORDPRESS_DB_PASSWORD} -e"quit" ${WORDPRESS_DB_NAME}; do
1
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    98
  >&2 echo "Mysql is unavailable - sleeping"
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    99
  sleep 1
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   100
done
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   101
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   102
>&2 echo "Mysql is up - proceeding"
79bc439970cd add missing files
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   103
0
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
if [[ "$1" == apache2* ]] || [ "$1" == php-fpm ]; then
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
	if [ "$(id -u)" = '0' ]; then
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
		case "$1" in
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
			apache2*)
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
				user="${APACHE_RUN_USER:-www-data}"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
				group="${APACHE_RUN_GROUP:-www-data}"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
				# strip off any '#' symbol ('#1000' is valid syntax for Apache)
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
				pound='#'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
				user="${user#$pound}"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
				group="${group#$pound}"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
				;;
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
			*) # php-fpm
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
				user='www-data'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
				group='www-data'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
				;;
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
		esac
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
	else
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
		user="$(id -u)"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
		group="$(id -g)"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
	fi
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
	# TODO : create .env file if needed
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
	if [ ! -e .env ] && [ "$haveConfig" ]; then
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
		cat > .env <<-EOF
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
				DB_NAME=${WORDPRESS_DB_NAME}
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
				DB_USER=${WORDPRESS_DB_USER}
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
				DB_PASSWORD=${WORDPRESS_DB_PASSWORD}
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
				DB_HOST=db:3306
7
3ecf94cab400 Change .net to .test
ymh <ymh.work@gmail.com>
parents: 6
diff changeset
   133
				WP_HOME=http://recherchecontributive.test:8080
0
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
				
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
				WP_SITEURL=\${WP_HOME}/wp
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
				WP_ENV=development
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
				
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
				AUTH_KEY='$(generate_rnd)'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
				SECURE_AUTH_KEY='$(generate_rnd)'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
				LOGGED_IN_KEY='$(generate_rnd)'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
				NONCE_KEY='$(generate_rnd)'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
				AUTH_SALT='$(generate_rnd)'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
				SECURE_AUTH_SALT='$(generate_rnd)'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
				LOGGED_IN_SALT='$(generate_rnd)'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
				NONCE_SALT='$(generate_rnd)'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
			EOF
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
			chown "$user:$group" .env
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
		if ! TERM=dumb php -- <<'EOPHP'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
<?php
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
// 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
   155
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
$stderr = fopen('php://stderr', 'w');
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
// https://codex.wordpress.org/Editing_wp-config.php#MySQL_Alternate_Port
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
//   "hostname:port"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
// https://codex.wordpress.org/Editing_wp-config.php#MySQL_Sockets_or_Pipes
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
//   "hostname:unix-socket-path"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
list($host, $socket) = explode(':', getenv('WORDPRESS_DB_HOST'), 2);
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
$port = 0;
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
if (is_numeric($socket)) {
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
	$port = (int) $socket;
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
	$socket = null;
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
}
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
$user = getenv('WORDPRESS_DB_USER');
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
$pass = getenv('WORDPRESS_DB_PASSWORD');
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
$dbName = getenv('WORDPRESS_DB_NAME');
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
$maxTries = 10;
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
do {
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
	$mysql = new mysqli($host, $user, $pass, '', $port, $socket);
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
	if ($mysql->connect_error) {
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
		fwrite($stderr, "\n" . 'MySQL Connection Error: (' . $mysql->connect_errno . ') ' . $mysql->connect_error . "\n");
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
		--$maxTries;
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
		if ($maxTries <= 0) {
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
			exit(1);
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
		}
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
		sleep(3);
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
	}
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
} while ($mysql->connect_error);
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
if (!$mysql->query('CREATE DATABASE IF NOT EXISTS `' . $mysql->real_escape_string($dbName) . '`')) {
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
	fwrite($stderr, "\n" . 'MySQL "CREATE DATABASE" Error: ' . $mysql->error . "\n");
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
	$mysql->close();
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
	exit(1);
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
}
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
$mysql->close();
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
EOPHP
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
		then
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
			echo >&2
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
			echo >&2 "WARNING: unable to establish a database connection to '$WORDPRESS_DB_HOST'"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
			echo >&2 '  continuing anyways (which might have unexpected results)'
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
			echo >&2
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
	fi
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
	# 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
   202
	for e in "${envs[@]}"; do
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
		unset "$e"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   204
	done
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
fi
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   206
4
f0b7075b9496 Always launch composer install and add composer plugin prestissomo to speed up install
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   207
# Always lauch composer to install or update dependencies
f0b7075b9496 Always launch composer install and add composer plugin prestissomo to speed up install
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   208
composer --no-interaction install
0
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   209
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
# first arg is `-f` or `--some-option`
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
if [ "${1#-}" != "$1" ]; then
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   212
	set -- composer exec wp "$@"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   213
fi
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   215
# 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
   216
# (this allows for "docker run wordpress:cli help", etc)
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   217
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
   218
	set -- composer exec wp "$@"
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   219
fi
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   220
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   221
800e4a6ab128 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
exec "$@"