45 lines
1.1 KiB
Bash
Executable File
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
|