diff --git a/scripts/entrypoint.sh b/scripts/entrypoint.sh index fcbb442..cf9b6a5 100755 --- a/scripts/entrypoint.sh +++ b/scripts/entrypoint.sh @@ -8,7 +8,16 @@ if [ -z "$environment" ]; then environment="PROD" fi -adduser -u $uid $user +# Create user with proper error handling +if ! id -u $user >/dev/null 2>&1; then + echo "Creating user $user with UID $uid" + adduser -u $uid -m -s /bin/bash $user || { + echo "Failed to create user $user with UID $uid" + exit 1 + } +else + echo "User $user already exists" +fi mkdir -p /home/$user/app mkdir -p /home/$user/logs/{nginx,nodejs} @@ -64,15 +73,25 @@ fi # Now there's always an app in the user directory (either user's or example) cd /home/$user/app + +# Verify user exists and show info +echo "Verifying user setup:" +id $user || { echo "ERROR: User $user does not exist!"; exit 1; } + +# Install dependencies as the user +echo "Installing npm dependencies as user $user..." su -c "npm install" $user # Check if ecosystem.config.js exists, if not generate it if [ ! -f /home/$user/app/ecosystem.config.js ]; then echo "No ecosystem.config.js found, generating from package.json..." /scripts/generate-ecosystem-config.sh "$user" "/home/$user/app" + chown $user:$user /home/$user/app/ecosystem.config.js fi -su -c "pm2 start ecosystem.config.js" $user +# Start PM2 as the user with HOME environment set +echo "Starting PM2 as user $user..." +su -c "cd /home/$user/app && HOME=/home/$user pm2 start ecosystem.config.js --no-daemon" $user & # Follow logs tail -f /home/$user/logs/nginx/* /home/$user/logs/nodejs/*