#!/usr/bin/with-contenv bash # Designed to replace original, overcomplicated entrypoint script from official wordpress docker repository # Why not use already available tools instead?! # Register exit handler trap scriptExitHandler EXIT function scriptExitHandler() { LAST_EXIT_CODE=$? if [ "${LAST_EXIT_CODE}" = "0" ]; then echo "> Script finished successfully" exit "${LAST_EXIT_CODE}" fi echo "> Script finished with an error" exit "${LAST_EXIT_CODE}" } # Applies patch for making WordPress updates impossible function disableUpdatesPatch() { DISABLE_WP_UPDATES="${ENFORCE_DISABLE_WP_UPDATES:-true}" if [ "${DISABLE_WP_UPDATES}" != "false" ]; then echo "> Disabling WordPress updates..." patch /var/www/html/wp-admin/update-core.php Marking the patched file read-only..." chmod 0440 /var/www/html/wp-admin/update-core.php fi } # Main function function main() { # Removes trailing zero if found # This is required due to inconsistencies between WodPress docker image versioning and wp-cli core download # If patch version is 0, it is not considered by wp-cli. WP_VERSION=$(echo "${WP_VERSION:?}" | sed --expression='s/.0$//g') echo "> Verifying 'WordPress ${WP_VERSION}' installation..." WP_INSTALLED_VERSION="$(wp core version)" set -e if [ -z "${WP_INSTALLED_VERSION}" ]; then echo "> ERROR! WordPress installation does not seem to be present or valid. Continuing anyway..." return 0 elif [ "${WP_INSTALLED_VERSION}" != "${WP_VERSION}" ]; then echo "> WARNING! WordPress version mismatch" echo " Expected version: ${WP_VERSION}" echo " Detected version: ${WP_INSTALLED_VERSION}" echo "> Seems like WordPress installation got updated outside image scope" echo " - This is dangerous as changes will not persist when container is recreated which might lead to inconsistencies between installation and the database." echo " - You should assume that recreating the container will render the website inoperable." echo " - Please make sure that you're running image: nlss/wordpress:${WP_VERSION}" return 0 else echo "> Identified 'WordPress ${WP_VERSION}'" # This will apply patch once and again only if container is recreated if [ ! -f "/var/www/patch-applied" ]; then disableUpdatesPatch touch "/var/www/patch-applied" fi fi } main "${@}" exit $?