Files
dumpsterChat/deploy.sh
T

45 lines
1.1 KiB
Bash
Executable File

#!/bin/bash
set -e
cd /opt/dumpsterChat
# Load nvm for Node/npm
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm use 22
# Snapshot the current binary before pulling
if [ -f dumpster-server ]; then
cp dumpster-server dumpster-server.bak
echo "Backed up existing binary to dumpster-server.bak"
fi
git pull
make build
# Sync web dist to Docker Caddy volume if present
if [ -d /var/lib/docker/volumes/docker_web_assets/_data ]; then
rsync -a --delete web/dist/ /var/lib/docker/volumes/docker_web_assets/_data/
echo "Synced web assets to Docker Caddy volume"
fi
# Health check after restart — roll back on failure
systemctl restart dumpster
echo "Waiting for app to become healthy..."
for i in $(seq 1 15); do
if curl -sf http://localhost:8080/ > /dev/null 2>&1; then
echo "Server is listening — deploy complete"
rm -f dumpster-server.bak
echo "Deploy complete — $(date)"
exit 0
fi
sleep 2
done
echo "Health check failed after 30s — rolling back..."
systemctl stop dumpster
cp dumpster-server.bak dumpster-server
systemctl start dumpster
echo "Rolled back to previous binary — $(date)"
exit 1