quick take on applying migrations automatically

This commit is contained in:
Christian Winther 2024-01-05 23:54:17 +00:00
parent a8c5585e19
commit 6edf266a14
3 changed files with 30 additions and 2 deletions

View File

@ -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
###############################################################

View File

@ -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

View File

@ -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() {