Implement auto-generation of ecosystem.config.js and improve container setup
Some checks failed
Cloud Node Container / Build-and-Push (18) (push) Failing after 38s
Cloud Node Container / Build-and-Push (20) (push) Failing after 33s
Cloud Node Container / Build-and-Push (22) (push) Failing after 33s

- Add automatic ecosystem.config.js generation from package.json
- Create app directory automatically if missing
- Copy simple-website example when app directory is empty
- Remove redundant default app files from configs/
- Add HAProxy support with proper real IP forwarding
- Configure nginx to trust proxy headers from private networks
- Simplify entrypoint logic - always use /home/$user/app

This makes the container more user-friendly by eliminating the need for
manual PM2 configuration and ensuring the server always has a working app.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-07-24 09:01:08 -07:00
parent f8edb2b407
commit 9f0aa4b8b1
10 changed files with 123 additions and 196 deletions

View File

@@ -30,7 +30,6 @@ nginx
if [[ $environment == 'DEV' ]]; then
echo "Starting Dev Deployment"
mkdir -p /home/$user/_backups
# Ensure microdnf is available for installing additional packages in DEV mode
if ! command -v microdnf &> /dev/null; then
@@ -43,25 +42,38 @@ if [[ $environment == 'DEV' ]]; then
# Start memcached with 32MB memory limit
nohup memcached -d -u $user -p 11211 -m 32
# Set up automatic backups
echo "*/30 * * * * root /scripts/backup.sh $user" >> /etc/crontab
fi
# Start cron for log rotation and backups
/usr/sbin/crond
# If there's an app in the user directory, start it with PM2
if [ -f /home/$user/app/package.json ]; then
cd /home/$user/app
su -c "npm install" $user
su -c "pm2 start ecosystem.config.js" $user
else
# Start default app
cd /var/www/html
npm install
su -c "pm2 start ecosystem.config.js" $user
# Create app directory if it doesn't exist
if [ ! -d /home/$user/app ]; then
echo "Creating app directory at /home/$user/app"
mkdir -p /home/$user/app
chown -R $user:$user /home/$user/app
fi
# If app directory is empty, copy the simple-website example
if [ -z "$(ls -A /home/$user/app)" ]; then
echo "App directory is empty, copying simple-website example..."
cp -r /examples/simple-website/* /home/$user/app/
chown -R $user:$user /home/$user/app
echo "Copied simple-website example to provide a working application"
fi
# Now there's always an app in the user directory (either user's or example)
cd /home/$user/app
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"
fi
su -c "pm2 start ecosystem.config.js" $user
# Follow logs
tail -f /home/$user/logs/nginx/* /home/$user/logs/nodejs/*