73 lines
1.6 KiB
Bash
Executable File
73 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# Docker entrypoint script for Quality App v2
|
|
|
|
set -e
|
|
|
|
echo "Starting Quality App v2 initialization..."
|
|
|
|
# Wait for MariaDB to be ready using Python
|
|
if [ ! -z "$DB_HOST" ]; then
|
|
echo "Waiting for MariaDB at $DB_HOST:$DB_PORT..."
|
|
python3 << 'EOF'
|
|
import socket
|
|
import time
|
|
import sys
|
|
import os
|
|
|
|
host = os.getenv('DB_HOST', 'localhost')
|
|
port = int(os.getenv('DB_PORT', '3306'))
|
|
max_attempts = 30
|
|
attempt = 0
|
|
|
|
while attempt < max_attempts:
|
|
try:
|
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
sock.settimeout(5)
|
|
result = sock.connect_ex((host, port))
|
|
sock.close()
|
|
if result == 0:
|
|
print(f"MariaDB is ready at {host}:{port}")
|
|
break
|
|
except Exception as e:
|
|
pass
|
|
attempt += 1
|
|
print(f"Attempt {attempt}/{max_attempts}: MariaDB not ready yet, waiting...")
|
|
time.sleep(2)
|
|
|
|
if attempt == max_attempts:
|
|
print("MariaDB did not become ready in time")
|
|
sys.exit(1)
|
|
EOF
|
|
|
|
# Initialize database
|
|
echo "Initializing database..."
|
|
python3 initialize_db.py
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo "Database initialization failed"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
echo "Quality App v2 is ready to start!"
|
|
|
|
# Test Flask app import first
|
|
python3 << 'PYEOF'
|
|
import sys
|
|
import os
|
|
sys.path.insert(0, '/app')
|
|
try:
|
|
from app import create_app
|
|
print("✓ Flask app imports successfully")
|
|
app = create_app()
|
|
print("✓ Flask app created successfully")
|
|
except Exception as e:
|
|
print(f"✗ Error loading Flask app: {e}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
sys.exit(1)
|
|
PYEOF
|
|
|
|
# Execute the main command
|
|
exec "$@"
|