From be696d2cff2bfe63bf6b5a206b9095e5a28cac05 Mon Sep 17 00:00:00 2001 From: Dom Sekotill Date: Thu, 14 Nov 2019 01:49:38 +0000 Subject: [PATCH 1/7] Add S3-Uploads to support media offloading --- Dockerfile | 5 +++-- data/composer.json | 16 +++++++++++++++ data/wp-config.php | 7 +++++++ plugins/s3-uploads-config.php | 20 +++++++++++++++++++ scripts/entrypoint.sh | 37 +++++++++++++++++++++++++++++++++-- scripts/install-wp.sh | 10 ++++++++++ 6 files changed, 91 insertions(+), 4 deletions(-) create mode 100644 data/composer.json create mode 100644 plugins/s3-uploads-config.php diff --git a/Dockerfile b/Dockerfile index 61f1816..8ee65eb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,13 +20,14 @@ ARG wp_version=latest WORKDIR /app ENV WORDPRESS_ROOT=/app -COPY scripts/wp.sh /usr/local/bin/wp COPY --from=compile /usr/local/etc/php /usr/local/etc/php COPY --from=compile /usr/local/lib/php /usr/local/lib/php +COPY scripts/wp.sh /usr/local/bin/wp +COPY data/composer.json /app/composer.json RUN --mount=type=bind,source=scripts/install-wp.sh,target=/stage \ /stage ${wp_version} -COPY plugins/probe.php wp-content/mu-plugins/ +COPY plugins/* wp-content/mu-plugins/ COPY data/fpm.conf /usr/local/etc/php-fpm.d/image.conf COPY data/opcache.ini /usr/local/etc/php/conf.d/opcache-recommended.ini COPY data/wp-config.php /usr/share/wordpress/wp-config.php diff --git a/data/composer.json b/data/composer.json new file mode 100644 index 0000000..203beb3 --- /dev/null +++ b/data/composer.json @@ -0,0 +1,16 @@ +{ + "type": "project", + "license": "MPL-2.0", + "repositories": [ + { + "type": "gitlab", + "url": "https://code.kodo.org.uk/singing-chimes.co.uk/s3-uploads" + } + ], + "require": { + "humanmade/s3-uploads": "dev-develop" + }, + "config": { + "gitlab-domains": [ "code.kodo.org.uk" ] + } +} diff --git a/data/wp-config.php b/data/wp-config.php index 78063c2..b5d621a 100644 --- a/data/wp-config.php +++ b/data/wp-config.php @@ -22,3 +22,10 @@ define('DISABLE_WP_CRON', true); * installation. **/ define('UPLOADS', 'media'); + +/** + * Run the Composer autoloader, if available + * Assume the CWD is always /app and vendor is always in it. + **/ +if ( is_file('vendor/autoload.php') ) + require_once 'vendor/autoload.php'; diff --git a/plugins/s3-uploads-config.php b/plugins/s3-uploads-config.php new file mode 100644 index 0000000..97d2083 --- /dev/null +++ b/plugins/s3-uploads-config.php @@ -0,0 +1,20 @@ +/usr/local/lib/wp-cli.phar @@ -21,3 +27,7 @@ mkdir -p wp-content/mu-plugins # Install non-optional plugins curl ${WP_PASSWORD_HASH}/wp-php-password-hash.php \ >wp-content/mu-plugins/password-hash.php + +# Install composer managed dependencies +export COMPOSER_ALLOW_SUPERUSER=1 +composer install --prefer-dist -- GitLab From 1e2ed9d3edbd8db1cbb1041491f710eacc003143 Mon Sep 17 00:00:00 2001 From: Dom Sekotill Date: Sun, 15 Mar 2020 02:15:26 +0000 Subject: [PATCH 2/7] Upload any found media files to S3 when enabled --- scripts/entrypoint.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/scripts/entrypoint.sh b/scripts/entrypoint.sh index 27c4758..0abbc1a 100755 --- a/scripts/entrypoint.sh +++ b/scripts/entrypoint.sh @@ -121,6 +121,11 @@ setup_s3() { # Due to what appears to be a bug in the plugin, this MUST be a non-empty # string; mostly it just affects the log output wp config set S3_UPLOADS_BUCKET "CONFIGURED-BUCKET" + + # If there is anything in ./media, upload it + local contents=( media/* ) + [[ ${#contents[*]} -gt 0 ]] && + wp s3-uploads upload-directory media } setup_components() { -- GitLab From 7f9df77bc925898891f741370d267b258c9f76b3 Mon Sep 17 00:00:00 2001 From: Dom Sekotill Date: Wed, 18 Mar 2020 10:32:02 +0000 Subject: [PATCH 3/7] Fix composer autoload include --- data/wp-config.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/wp-config.php b/data/wp-config.php index b5d621a..b05132f 100644 --- a/data/wp-config.php +++ b/data/wp-config.php @@ -27,5 +27,5 @@ define('UPLOADS', 'media'); * Run the Composer autoloader, if available * Assume the CWD is always /app and vendor is always in it. **/ -if ( is_file('vendor/autoload.php') ) - require_once 'vendor/autoload.php'; +if ( is_file(ABSPATH . 'vendor/autoload.php') ) + require_once ABSPATH . 'vendor/autoload.php'; -- GitLab From 5e8861ee4e26ee6520b356895492494eda191719 Mon Sep 17 00:00:00 2001 From: Dom Sekotill Date: Wed, 18 Mar 2020 10:33:59 +0000 Subject: [PATCH 4/7] Support CDN/alternative download endpoints for S3 --- plugins/s3-uploads-config.php | 2 +- scripts/entrypoint.sh | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/plugins/s3-uploads-config.php b/plugins/s3-uploads-config.php index 97d2083..d18194d 100644 --- a/plugins/s3-uploads-config.php +++ b/plugins/s3-uploads-config.php @@ -10,7 +10,7 @@ */ add_filter( 's3_uploads_s3_client_params', function ( $params ) { - $params['endpoint'] = S3_UPLOADS_BUCKET_URL; + $params['endpoint'] = S3_UPLOADS_ENDPOINT_URL; $params['bucket_endpoint'] = true; $params['disable_host_prefix_injection'] = true; $params['use_path_style_endpoint'] = true; diff --git a/scripts/entrypoint.sh b/scripts/entrypoint.sh index 0abbc1a..7f90152 100755 --- a/scripts/entrypoint.sh +++ b/scripts/entrypoint.sh @@ -101,7 +101,7 @@ setup_s3() { declare -a configs=( "${!S3_ENDPOINT_@}" ) [[ ${#configs[*]} -gt 0 ]] || return 0 - [[ -v S3_UPLOADS_ENDPOINT ]] && + [[ -v S3_UPLOADS_ENDPOINT_URL ]] && [[ -v S3_ENDPOINT_KEY ]] && [[ -v S3_ENDPOINT_SECRET ]] || return 0 @@ -111,7 +111,13 @@ setup_s3() { [[ -v S3_UPLOADS_USE_LOCAL ]] && wp config set S3_UPLOADS_USE_LOCAL true --raw - wp config set S3_UPLOADS_BUCKET_URL "${S3_UPLOADS_ENDPOINT}" + if [[ -v S3_UPLOADS_REWRITE_URL ]]; then + wp config set S3_UPLOADS_BUCKET_URL "${S3_UPLOADS_REWRITE_URL}" + else + wp config set S3_UPLOADS_BUCKET_URL "${S3_UPLOADS_ENDPOINT_URL}" + fi + + wp config set S3_UPLOADS_ENDPOINT_URL "${S3_UPLOADS_ENDPOINT_URL}" wp config set S3_UPLOADS_KEY ${S3_ENDPOINT_KEY} wp config set S3_UPLOADS_SECRET ${S3_ENDPOINT_SECRET} --quiet -- GitLab From 95f6e15850435ce37cd4165ecd78364c95d628b0 Mon Sep 17 00:00:00 2001 From: Dom Sekotill Date: Wed, 18 Mar 2020 19:15:09 +0000 Subject: [PATCH 5/7] Use S3-Upload as a Must-Use plugin --- data/composer.json | 5 +++++ plugins/s3-uploads-config.php | 20 -------------------- plugins/s3-uploads.php | 26 ++++++++++++++++++++++++++ scripts/entrypoint.sh | 2 -- 4 files changed, 31 insertions(+), 22 deletions(-) delete mode 100644 plugins/s3-uploads-config.php create mode 100644 plugins/s3-uploads.php diff --git a/data/composer.json b/data/composer.json index 203beb3..c028f78 100644 --- a/data/composer.json +++ b/data/composer.json @@ -12,5 +12,10 @@ }, "config": { "gitlab-domains": [ "code.kodo.org.uk" ] + }, + "extra": { + "installer-paths": { + "wp-content/mu-plugins/{$name}/": [ "type:wordpress-plugin" ] + } } } diff --git a/plugins/s3-uploads-config.php b/plugins/s3-uploads-config.php deleted file mode 100644 index d18194d..0000000 --- a/plugins/s3-uploads-config.php +++ /dev/null @@ -1,20 +0,0 @@ - Date: Wed, 18 Mar 2020 19:32:16 +0000 Subject: [PATCH 6/7] Limit S3-Upload updates to configurations making use of it --- scripts/entrypoint.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/entrypoint.sh b/scripts/entrypoint.sh index 7e0c2ab..f78ae02 100755 --- a/scripts/entrypoint.sh +++ b/scripts/entrypoint.sh @@ -106,6 +106,9 @@ setup_s3() { [[ -v S3_ENDPOINT_SECRET ]] || return 0 + composer update --prefer-dist --no-dev --with-dependencies \ + humanmade/s3-uploads + [[ -v S3_UPLOADS_USE_LOCAL ]] && wp config set S3_UPLOADS_USE_LOCAL true --raw @@ -142,7 +145,6 @@ setup_components() { wp language core update wp language plugin update --all wp language theme update --all - composer update --prefer-dist # Ensure at least one theme is installed [[ ${#THEMES[*]} -eq 0 ]] && THEMES+=( ${DEFAULT_THEME} ) -- GitLab From ceee60b823ce6bcc44d28ad960ea1d98b434cc87 Mon Sep 17 00:00:00 2001 From: Dom Sekotill Date: Thu, 19 Mar 2020 14:09:36 +0000 Subject: [PATCH 7/7] Fix media-url rewrite plugin --- plugins/media-url.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/media-url.php b/plugins/media-url.php index d1b1171..955cc97 100644 --- a/plugins/media-url.php +++ b/plugins/media-url.php @@ -30,7 +30,7 @@ function unparse_url( array $parts ) { (isset($parts['scheme']) ? "{$parts['scheme']}://" : '') . (isset($parts['user']) ? $parts['user'] : '') . (isset($parts['pass']) ? ":{$parts['pass']}" : '') . - (isset($parts['user'] || isset($parts['pass'])) ? '@' : '') . + (isset($parts['user']) || isset($parts['pass']) ? '@' : '') . (isset($parts['host']) ? $parts['host'] : '') . (isset($parts['port']) ? ":{$parts['port']}" : '') . (isset($parts['path']) ? $parts['path'] : '') . -- GitLab