Files
natureinpots_community/entrypoint.sh

47 lines
1.2 KiB
Bash

#!/usr/bin/env bash
set -e
# 1) Wait for MySQL to come up
DB_HOST="${DB_HOST:-${MYSQL_HOST:-db}}"
DB_PORT="${DB_PORT:-${MYSQL_PORT:-3306}}"
echo "[⏳] Waiting for database at $DB_HOST:$DB_PORT..."
until nc -z "$DB_HOST" "$DB_PORT"; do
sleep 1
done
echo "[✔] Database is up"
# 2) Ensure the shared upload directory is owned and writable
UPLOAD_DIR="/app/${UPLOAD_FOLDER:-data/uploads}"
mkdir -p "$UPLOAD_DIR"
chown -R appuser:appuser "$UPLOAD_DIR"
chmod -R u+rwX,g+rwX,o+rX "$UPLOAD_DIR"
echo "⏺️ Ensured upload directory exists and is owned by appuser: $UPLOAD_DIR"
# 3) If we're launching Flask, run migrations and optional seed
if [ "$1" = "flask" ]; then
echo "[🛠️] Applying database migrations"
flask db upgrade
echo "[🛠️] Ensuring any missing tables"
python <<EOF
from app import create_app, db
app = create_app()
with app.app_context():
db.create_all()
EOF
if [ "${ENABLE_DB_SEEDING,,}" = "true" ] || [ "${ENABLE_DB_SEEDING}" = "1" ]; then
echo "[🌱] Seeding data"
flask preload-data
fi
echo "[🚀] Ready to start Flask"
fi
# 4) If we're root, drop to appuser; otherwise just run
if [ "$(id -u)" = "0" ]; then
exec gosu appuser "$@"
else
exec "$@"
fi