#!/bin/sh # This script runs as root to set up permissions, then switches to nodejs user # Ensure uploads directory exists and has correct permissions mkdir -p /app/uploads/logos chown -R nodejs:nodejs /app/uploads chmod -R 755 /app/uploads # Wait for database to be ready echo "Waiting for database to be ready..." while ! nc -z postgres 5432; do echo "Database not ready, waiting..." sleep 1 done echo "Database is ready!" # Check if this is a fresh database by looking for the devices table echo "Checking database state..." # Always run database setup (includes migrations + seeding if needed) echo "Running database setup and migrations..." su-exec nodejs npm run db:setup # Check if setup/migrations were successful if [ $? -eq 0 ]; then echo "Database initialization completed successfully" # Set flag to indicate database is already initialized export DB_INITIALIZED=true else echo "Database initialization failed" exit 1 fi # Switch to nodejs user and execute the command with dumb-init for signal handling exec su-exec nodejs dumb-init -- "$@"