Files
Warracker/Docker/entrypoint.sh

53 lines
1.5 KiB
Bash

#!/bin/bash
set -euo pipefail
echo "=== Warracker Startup ==="
# Logging function
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
}
# Database connection check (with retry)
log "Waiting for database connection..."
for i in {1..30}; do
if pg_isready -h "${DB_HOST:-localhost}" -p "${DB_PORT:-5432}" -U "${DB_USER:-postgres}" > /dev/null 2>&1; then
log "Database is ready!"
break
fi
if [ $i -eq 30 ]; then
log "ERROR: Database not available after 30 attempts"
exit 1
fi
sleep 2
done
# Migrations and permissions
log "Running database migrations..."
python /app/migrations/apply_migrations.py
log "Fixing permissions (database and upload folder)..."
python /app/fix_permissions.py
# Translation compilation
log "Compiling translations..."
cd /app
pybabel compile -d locales 2>/dev/null || log "Warning: Translation compilation failed"
# Nginx configuration (create temp file, root will move it)
log "Preparing nginx configuration..."
EFFECTIVE_SIZE="${NGINX_MAX_BODY_SIZE_VALUE:-32M}"
if ! echo "${EFFECTIVE_SIZE}" | grep -Eq "^[0-9]+[mMkKgG]?$"; then
log "Warning: Invalid NGINX_MAX_BODY_SIZE_VALUE. Using default 32M"
EFFECTIVE_SIZE="32M"
fi
sed "s|__NGINX_MAX_BODY_SIZE_CONFIG_VALUE__|${EFFECTIVE_SIZE}|g" \
/etc/nginx/conf.d/default.conf.template > /tmp/nginx-default.conf
log "Nginx config prepared (size: ${EFFECTIVE_SIZE})"
log "Setup completed successfully!"
# Execute the CMD (supervisor) by replacing this shell process
log "Starting supervisor..."
exec "$@"