52 lines
1.2 KiB
Bash
52 lines
1.2 KiB
Bash
#!/bin/sh
|
|
set -e
|
|
|
|
wait_for_db() {
|
|
python - <<'PY'
|
|
import os
|
|
import socket
|
|
import sys
|
|
import time
|
|
|
|
host = os.environ.get("DB_HOST", "db")
|
|
port = int(os.environ.get("DB_PORT", "3306"))
|
|
deadline = time.time() + 90
|
|
|
|
while time.time() < deadline:
|
|
try:
|
|
with socket.create_connection((host, port), timeout=3):
|
|
print(f"Database is reachable at {host}:{port}")
|
|
sys.exit(0)
|
|
except OSError as exc:
|
|
print(f"Waiting for database {host}:{port}... {exc}")
|
|
time.sleep(2)
|
|
|
|
print(f"Timed out waiting for database {host}:{port}", file=sys.stderr)
|
|
sys.exit(1)
|
|
PY
|
|
}
|
|
|
|
if [ "${SKIP_MIGRATE}" != "1" ]; then
|
|
wait_for_db
|
|
echo "Running migrations..."
|
|
python manage.py repair_location_tables
|
|
python manage.py migrate --noinput
|
|
echo "Migrations done."
|
|
fi
|
|
|
|
if [ -n "${DEVELOP}" ] && [ "${SKIP_MIGRATE}" != "1" ]; then
|
|
echo "DEVELOP is set. Seeding demo plant, location_data, weather_data, and farm_data..."
|
|
python manage.py seed_plants
|
|
python manage.py seed_location_data
|
|
python manage.py seed_weather_data
|
|
python manage.py seed_farm_data
|
|
echo "Demo seeders done."
|
|
fi
|
|
|
|
echo "Collecting static files..."
|
|
python manage.py collectstatic --noinput
|
|
echo "Static files ready."
|
|
|
|
echo "Starting command: $*"
|
|
exec "$@"
|