diff --git a/contrib/docker-compose/.env b/contrib/docker-compose/.env index ee934ef7e..c9e235533 100644 --- a/contrib/docker-compose/.env +++ b/contrib/docker-compose/.env @@ -19,6 +19,9 @@ DOCKER_TAG="branch-jippi-fork-apache-8.1" # See: https://www.php.net/manual/en/timezones.php TZ="UTC" +# Automatically run [artisan migrate --force] if new migrations are detected +DOCKER_APPLY_NEW_MIGRATIONS_AUTOMATICALLY="0" + ############################################################### # Pixelfed application configuration ############################################################### diff --git a/contrib/docker/shared/root/docker/entrypoint.d/12-migrations.sh b/contrib/docker/shared/root/docker/entrypoint.d/12-migrations.sh index 2df379ac1..68008c596 100755 --- a/contrib/docker/shared/root/docker/entrypoint.d/12-migrations.sh +++ b/contrib/docker/shared/root/docker/entrypoint.d/12-migrations.sh @@ -3,7 +3,29 @@ source /docker/helpers.sh entrypoint-set-script-name "$0" +# Allow automatic applying of outstanding/new migrations on startup +: ${DOCKER_APPLY_NEW_MIGRATIONS_AUTOMATICALLY:=0} + +if [[ $DOCKER_APPLY_NEW_MIGRATIONS_AUTOMATICALLY -eq 0 ]]; then + log-info "Automatic applying of new database migrations is disabled" + log-info "Please set [DOCKER_APPLY_NEW_MIGRATIONS_AUTOMATICALLY=1] in your [.env] file to enable this." + + exit 0 +fi + +# Wait for the database to be ready await-database-ready -declare new_migrations=0 -run-as-runtime-user php artisan migrate:status | grep No && migrations=yes || migrations=no +# Detect if we have new migrations +declare -i new_migrations=0 +run-as-runtime-user php artisan migrate:status | grep No && new_migrations=1 + +if [[ $new_migrations -eq 0 ]]; then + log-info "No outstanding migrations detected" + + exit 0 +fi + +log-warning "New migrations available, will automatically apply them now" + +run-as-runtime-user php artisan migrate --force diff --git a/contrib/docker/shared/root/docker/helpers.sh b/contrib/docker/shared/root/docker/helpers.sh index 453af902d..4217b56a6 100644 --- a/contrib/docker/shared/root/docker/helpers.sh +++ b/contrib/docker/shared/root/docker/helpers.sh @@ -29,6 +29,9 @@ declare -g docker_once_path="${docker_state_path}/once" declare -g runtime_username=$(id -un ${RUNTIME_UID}) +# We should already be in /var/www, but just to be explicit +cd /var/www || log-error-and-exit "could not change to /var/www" + # @description Restore the log prefix to the previous value that was captured in [entrypoint-set-script-name ] # @arg $1 string The name (or path) of the entrypoint script being run function entrypoint-set-script-name() {