05f07ee544
Simplify runtime configuration and remove legacy database and settings surface so new installs are easier to operate. Refresh deployment assets, docs, and order execution behavior to keep the packaged app aligned with the current backend. Made-with: Cursor
85 lines
2.9 KiB
Bash
85 lines
2.9 KiB
Bash
#!/bin/sh
|
|
# QuantDinger Docker Entrypoint Script
|
|
# Checks and validates SECRET_KEY before starting the application
|
|
|
|
set -e
|
|
|
|
echo "============================================"
|
|
echo " QuantDinger Backend - Starting..."
|
|
echo "============================================"
|
|
|
|
# Check if .env file exists
|
|
if [ ! -f /app/.env ]; then
|
|
echo "[WARNING] .env file not found at /app/.env"
|
|
echo "Creating .env from env.example..."
|
|
if [ -f /app/env.example ]; then
|
|
cp /app/env.example /app/.env
|
|
echo "[INFO] Created .env from env.example"
|
|
echo "[IMPORTANT] Please edit /app/.env and set a secure SECRET_KEY before restarting!"
|
|
else
|
|
echo "[ERROR] env.example not found. Cannot create .env automatically."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# Check SECRET_KEY configuration
|
|
DEFAULT_SECRET="quantdinger-secret-key-change-me"
|
|
CURRENT_SECRET=$(grep -E "^SECRET_KEY=" /app/.env 2>/dev/null | cut -d'=' -f2- | tr -d '"' | tr -d "'" | xargs || echo "")
|
|
|
|
if [ -z "$CURRENT_SECRET" ]; then
|
|
echo ""
|
|
echo "============================================"
|
|
echo " [SECURITY WARNING]"
|
|
echo "============================================"
|
|
echo "SECRET_KEY is not set in /app/.env"
|
|
echo ""
|
|
echo "Please set a secure SECRET_KEY before starting:"
|
|
echo ""
|
|
echo " Option 1: Generate a random key:"
|
|
echo " docker exec -it quantdinger-backend python -c \"import secrets; print(secrets.token_hex(32))\""
|
|
echo ""
|
|
echo " Option 2: Edit .env file:"
|
|
echo " SECRET_KEY=your-generated-secret-key-here"
|
|
echo ""
|
|
echo "Then restart the container:"
|
|
echo " docker-compose restart backend"
|
|
echo ""
|
|
echo "============================================"
|
|
exit 1
|
|
fi
|
|
|
|
# Check if using default secret key
|
|
if [ "$CURRENT_SECRET" = "$DEFAULT_SECRET" ]; then
|
|
echo ""
|
|
echo "============================================"
|
|
echo " [SECURITY ERROR]"
|
|
echo "============================================"
|
|
echo "SECRET_KEY is using the default example value!"
|
|
echo "This is INSECURE and MUST be changed before running in production."
|
|
echo ""
|
|
echo "Current value: $CURRENT_SECRET"
|
|
echo ""
|
|
echo "To fix this:"
|
|
echo ""
|
|
echo " 1. Generate a secure random key:"
|
|
echo " docker exec -it quantdinger-backend python -c \"import secrets; print(secrets.token_hex(32))\""
|
|
echo ""
|
|
echo " 2. Edit backend_api_python/.env and replace SECRET_KEY:"
|
|
echo " SECRET_KEY=<generated-key-here>"
|
|
echo ""
|
|
echo " 3. Restart the container:"
|
|
echo " docker-compose restart backend"
|
|
echo ""
|
|
echo "Or use this one-liner (Linux/Mac):"
|
|
echo " sed -i 's|SECRET_KEY=.*|SECRET_KEY='\$(python3 -c \"import secrets; print(secrets.token_hex(32))\")\'|' backend_api_python/.env"
|
|
echo ""
|
|
echo "============================================"
|
|
exit 1
|
|
fi
|
|
|
|
echo "[OK] SECRET_KEY is configured"
|
|
echo ""
|
|
|
|
# Start the application
|
|
exec "$@"
|