33 lines
1.3 KiB
Bash
33 lines
1.3 KiB
Bash
#!/bin/sh
|
|
|
|
# Exit immediately if a command exits with a non-zero status.
|
|
set -e
|
|
|
|
# Optional: Wait for the database to be ready
|
|
# This simple loop tries to connect using Django's checks until it succeeds.
|
|
# Requires DATABASE_URL environment variable to be set correctly.
|
|
echo "Waiting for database..."
|
|
# You might need to install netcat (nc) in your Dockerfile for this:
|
|
# RUN apt-get update && apt-get install -y netcat-openbsd && rm -rf /var/lib/apt/lists/*
|
|
# Or use a more robust python script check if nc is not available/preferred.
|
|
|
|
# Simple check using Django shell (assumes DATABASE_URL is configured)
|
|
# Loop until the db connection is successful
|
|
until python manage.py shell -c "import sys; from django.db import connections; sys.exit(0) if connections['default'].cursor() else sys.exit(1)"; do
|
|
echo "Database is unavailable - sleeping"
|
|
sleep 1
|
|
done
|
|
echo "Database is up - continuing..."
|
|
|
|
# Apply database migrations
|
|
echo "Applying database migrations..."
|
|
python manage.py migrate --noinput
|
|
|
|
# --- Create Superuser using the management command ---
|
|
echo "Attempting to create superuser if needed..."
|
|
python manage.py createadmin
|
|
|
|
# Start the main process (passed as arguments to the script)
|
|
# "$@" executes the command passed in the docker-compose 'command' or the Dockerfile 'CMD'.
|
|
echo "Starting server..."
|
|
exec "$@"
|