44370f41e5
- .dockerignore excludes .git, node_modules, certs, *.zip - Dockerfile runs as non-root appuser - compose.yml isolates frontend (Caddy only) and backend (DB/cache/media) networks - deploy.sh snapshots binary before pull and rolls back on failed health check
39 lines
920 B
Bash
Executable File
39 lines
920 B
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
|
|
|
|
# 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
|