diff --git a/root/etc/cont-init.d/01-migrations b/root/etc/cont-init.d/01-migrations new file mode 100755 index 0000000..4ab4464 --- /dev/null +++ b/root/etc/cont-init.d/01-migrations @@ -0,0 +1,30 @@ +#!/bin/bash + +MIGRATIONS_DIR="/migrations" +MIGRATIONS_HISTORY="/config/.migrations" + +echo "[migrations] started" + +if [ ! -d $MIGRATIONS_DIR ]; then + echo "[migrations] no migrations found" + exit +fi + +for MIGRATION in $(ls -1 ${MIGRATIONS_DIR}/* | sort -n); do + NAME="$(basename "${MIGRATION}")" + if [ -f $MIGRATIONS_HISTORY ] && grep -Fxq "$NAME" $MIGRATIONS_HISTORY; then + echo "[migrations] ${NAME}: skipped" + continue + fi + echo "[migrations] ${NAME}: executing..." + chmod +x $MIGRATION + EXIT_CODE=$(/bin/bash ${MIGRATION}; echo $?) + if [ $EXIT_CODE -ne 0 ]; then + echo "[migrations] ${NAME}: failed with exit code $EXIT_CODE, contact support" + exit $EXIT_CODE + fi + echo $NAME >> $MIGRATIONS_HISTORY + echo "[migrations] ${NAME}: succeeded" +done + +echo "[migrations] done"