-
Notifications
You must be signed in to change notification settings - Fork 19
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #50 from utahta/fix-workon-php53
Work with PHP 5.3
- Loading branch information
Showing
10 changed files
with
309 additions
and
15 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
FROM centos:6 | ||
|
||
RUN set -ex; \ | ||
yum -y update; \ | ||
yum -y install httpd php php-mbstring php-mysql php-gd php-xml | ||
|
||
ENV WORDPRESS_VERSION 4.8 | ||
ENV WORDPRESS_SHA1 3738189a1f37a03fb9cb087160b457d7a641ccb4 | ||
|
||
RUN set -ex; \ | ||
curl -o wordpress.tar.gz -fSL "https://wordpress.org/wordpress-${WORDPRESS_VERSION}.tar.gz"; \ | ||
echo "$WORDPRESS_SHA1 *wordpress.tar.gz" | sha1sum -c -; \ | ||
# upstream tarballs include ./wordpress/ so this gives us /usr/src/wordpress | ||
tar -xzf wordpress.tar.gz -C /usr/src/; \ | ||
rm -f wordpress.tar.gz | ||
|
||
WORKDIR /var/www/html | ||
VOLUME /var/www/html | ||
|
||
COPY docker-entrypoint.sh /usr/local/bin/ | ||
|
||
ENTRYPOINT ["docker-entrypoint.sh"] | ||
|
||
CMD ["/usr/sbin/apachectl", "-DFOREGROUND"] | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
up: | ||
docker-compose up -d | ||
|
||
stop: | ||
docker-compose stop | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
version: '2' | ||
|
||
services: | ||
db: | ||
image: mysql:5.7 | ||
environment: | ||
MYSQL_ROOT_PASSWORD: wordpress | ||
MYSQL_DATABASE: wordpress | ||
MYSQL_USER: wordpress | ||
MYSQL_PASSWORD: wordpress | ||
volumes: | ||
- db_data_php53:/var/lib/mysql | ||
|
||
wordpress: | ||
depends_on: | ||
- db | ||
build: . | ||
ports: | ||
- 8005:80 | ||
volumes: | ||
- ~/repos/WP-Social-Bookmarking-Light/build/wp-social-bookmarking-light:/var/www/html/wp-content/plugins/wp-social-bookmarking-light | ||
environment: | ||
WORDPRESS_DB_HOST: db:3306 | ||
WORDPRESS_DB_PASSWORD: wordpress | ||
WORDPRESS_DEBUG: 1 | ||
|
||
volumes: | ||
db_data_php53: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,221 @@ | ||
#!/bin/bash | ||
# see https://github.com/docker-library/wordpress/blob/master/docker-entrypoint.sh | ||
|
||
set -euo pipefail | ||
|
||
# usage: file_env VAR [DEFAULT] | ||
# ie: file_env 'XYZ_DB_PASSWORD' 'example' | ||
# (will allow for "$XYZ_DB_PASSWORD_FILE" to fill in the value of | ||
# "$XYZ_DB_PASSWORD" from a file, especially for Docker's secrets feature) | ||
file_env() { | ||
local var="$1" | ||
local fileVar="${var}_FILE" | ||
local def="${2:-}" | ||
if [ "${!var:-}" ] && [ "${!fileVar:-}" ]; then | ||
echo >&2 "error: both $var and $fileVar are set (but are exclusive)" | ||
exit 1 | ||
fi | ||
local val="$def" | ||
if [ "${!var:-}" ]; then | ||
val="${!var}" | ||
elif [ "${!fileVar:-}" ]; then | ||
val="$(< "${!fileVar}")" | ||
fi | ||
export "$var"="$val" | ||
unset "$fileVar" | ||
} | ||
|
||
if [[ "$1" == apache2* ]] || [ "$1" == php-fpm ] || [ "$1" == "/usr/sbin/apachectl" ]; then | ||
if ! [ -e index.php -a -e wp-includes/version.php ]; then | ||
echo >&2 "WordPress not found in $PWD - copying now..." | ||
if [ "$(ls -A)" ]; then | ||
echo >&2 "WARNING: $PWD is not empty - press Ctrl+C now if this is an error!" | ||
( set -x; ls -A; sleep 10 ) | ||
fi | ||
tar cf - --one-file-system -C /usr/src/wordpress . | tar xf - | ||
echo >&2 "Complete! WordPress has been successfully copied to $PWD" | ||
if [ ! -e .htaccess ]; then | ||
# NOTE: The "Indexes" option is disabled in the php:apache base image | ||
cat > .htaccess <<-'EOF' | ||
# BEGIN WordPress | ||
<IfModule mod_rewrite.c> | ||
RewriteEngine On | ||
RewriteBase / | ||
RewriteRule ^index\.php$ - [L] | ||
RewriteCond %{REQUEST_FILENAME} !-f | ||
RewriteCond %{REQUEST_FILENAME} !-d | ||
RewriteRule . /index.php [L] | ||
</IfModule> | ||
# END WordPress | ||
EOF | ||
#chown www-data:www-data .htaccess | ||
fi | ||
fi | ||
|
||
# TODO handle WordPress upgrades magically in the same way, but only if wp-includes/version.php's $wp_version is less than /usr/src/wordpress/wp-includes/version.php's $wp_version | ||
|
||
# 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 | ||
"${uniqueEnvs[@]/#/WORDPRESS_}" | ||
WORDPRESS_TABLE_PREFIX | ||
WORDPRESS_DEBUG | ||
) | ||
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 | ||
|
||
# only touch "wp-config.php" if we have environment-supplied configuration values | ||
if [ "$haveConfig" ]; then | ||
: "${WORDPRESS_DB_HOST:=mysql}" | ||
: "${WORDPRESS_DB_USER:=root}" | ||
: "${WORDPRESS_DB_PASSWORD:=}" | ||
: "${WORDPRESS_DB_NAME:=wordpress}" | ||
|
||
# version 4.4.1 decided to switch to windows line endings, that breaks our seds and awks | ||
# https://github.com/docker-library/wordpress/issues/116 | ||
# https://github.com/WordPress/WordPress/commit/1acedc542fba2482bab88ec70d4bea4b997a92e4 | ||
sed -ri -e 's/\r$//' wp-config* | ||
|
||
if [ ! -e wp-config.php ]; then | ||
awk '/^\/\*.*stop editing.*\*\/$/ && c == 0 { c = 1; system("cat") } { print }' wp-config-sample.php > wp-config.php <<'EOPHP' | ||
// If we're behind a proxy server and using HTTPS, we need to alert Wordpress of that fact | ||
// see also http://codex.wordpress.org/Administration_Over_SSL#Using_a_Reverse_Proxy | ||
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { | ||
$_SERVER['HTTPS'] = 'on'; | ||
} | ||
EOPHP | ||
#chown www-data:www-data wp-config.php | ||
fi | ||
|
||
# see http://stackoverflow.com/a/2705678/433558 | ||
sed_escape_lhs() { | ||
echo "$@" | sed -e 's/[]\/$*.^|[]/\\&/g' | ||
} | ||
sed_escape_rhs() { | ||
echo "$@" | sed -e 's/[\/&]/\\&/g' | ||
} | ||
php_escape() { | ||
php -r 'var_export(('$2') $argv[1]);' -- "$1" | ||
} | ||
set_config() { | ||
key="$1" | ||
value="$2" | ||
var_type="${3:-string}" | ||
start="(['\"])$(sed_escape_lhs "$key")\2\s*," | ||
end="\);" | ||
if [ "${key:0:1}" = '$' ]; then | ||
start="^(\s*)$(sed_escape_lhs "$key")\s*=" | ||
end=";" | ||
fi | ||
sed -ri -e "s/($start\s*).*($end)$/\1$(sed_escape_rhs "$(php_escape "$value" "$var_type")")\3/" wp-config.php | ||
} | ||
|
||
set_config 'DB_HOST' "$WORDPRESS_DB_HOST" | ||
set_config 'DB_USER' "$WORDPRESS_DB_USER" | ||
set_config 'DB_PASSWORD' "$WORDPRESS_DB_PASSWORD" | ||
set_config 'DB_NAME' "$WORDPRESS_DB_NAME" | ||
|
||
for unique in "${uniqueEnvs[@]}"; do | ||
uniqVar="WORDPRESS_$unique" | ||
if [ -n "${!uniqVar}" ]; then | ||
set_config "$unique" "${!uniqVar}" | ||
else | ||
# if not specified, let's generate a random value | ||
currentVal="$(sed -rn -e "s/define\((([\'\"])$unique\2\s*,\s*)(['\"])(.*)\3\);/\4/p" wp-config.php)" | ||
if [ "$currentVal" = 'put your unique phrase here' ]; then | ||
set_config "$unique" "$(head -c1m /dev/urandom | sha1sum | cut -d' ' -f1)" | ||
fi | ||
fi | ||
done | ||
|
||
if [ "$WORDPRESS_TABLE_PREFIX" ]; then | ||
set_config '$table_prefix' "$WORDPRESS_TABLE_PREFIX" | ||
fi | ||
|
||
if [ "$WORDPRESS_DEBUG" ]; then | ||
set_config 'WP_DEBUG' 1 boolean | ||
fi | ||
|
||
TERM=dumb php -- <<'EOPHP' | ||
<?php | ||
// database might not exist, so let's try creating it (just to be safe) | ||
$stderr = fopen('php://stderr', 'w'); | ||
// https://codex.wordpress.org/Editing_wp-config.php#MySQL_Alternate_Port | ||
// "hostname:port" | ||
// https://codex.wordpress.org/Editing_wp-config.php#MySQL_Sockets_or_Pipes | ||
// "hostname:unix-socket-path" | ||
list($host, $socket) = explode(':', getenv('WORDPRESS_DB_HOST'), 2); | ||
$port = 0; | ||
if (is_numeric($socket)) { | ||
$port = (int) $socket; | ||
$socket = null; | ||
} | ||
$user = getenv('WORDPRESS_DB_USER'); | ||
$pass = getenv('WORDPRESS_DB_PASSWORD'); | ||
$dbName = getenv('WORDPRESS_DB_NAME'); | ||
$maxTries = 10; | ||
do { | ||
$mysql = new mysqli($host, $user, $pass, '', $port, $socket); | ||
if ($mysql->connect_error) { | ||
fwrite($stderr, "\n" . 'MySQL Connection Error: (' . $mysql->connect_errno . ') ' . $mysql->connect_error . "\n"); | ||
--$maxTries; | ||
if ($maxTries <= 0) { | ||
exit(1); | ||
} | ||
sleep(3); | ||
} | ||
} while ($mysql->connect_error); | ||
if (!$mysql->query('CREATE DATABASE IF NOT EXISTS `' . $mysql->real_escape_string($dbName) . '`')) { | ||
fwrite($stderr, "\n" . 'MySQL "CREATE DATABASE" Error: ' . $mysql->error . "\n"); | ||
$mysql->close(); | ||
exit(1); | ||
} | ||
$mysql->close(); | ||
EOPHP | ||
fi | ||
|
||
# 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) | ||
for e in "${envs[@]}"; do | ||
unset "$e" | ||
done | ||
fi | ||
|
||
exec "$@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.