Docker dev and prod, staging refresh, multi-env galleries and operator docs

This commit is contained in:
2026-10-05 14:32:21 +02:00
parent 94ae750e56
commit 4268b1ec9e
12 changed files with 768 additions and 7 deletions
+23
View File
@@ -0,0 +1,23 @@
#!/usr/bin/env bash
# retoor <retoor@molodetz.nl>
set -euo pipefail
SRC="${1:-/var/lib/molodetz}"
DEST=/var/lib/molodetz-staging
WORK="$(mktemp -d)"
trap 'sudo -n rm -rf "$WORK"' EXIT
test -f "$SRC/molodetz.db" || { echo "no database at $SRC/molodetz.db"; exit 1; }
test -d "$DEST" || { echo "no staging data dir at $DEST"; exit 1; }
sudo -n python3 -c "import sqlite3; s = sqlite3.connect('$SRC/molodetz.db'); d = sqlite3.connect('$WORK/molodetz.db'); s.backup(d); s.close(); d.close()"
for sub in uploads keys seo_reports; do
if [ -d "$SRC/$sub" ]; then sudo -n cp -a "$SRC/$sub" "$WORK/"; fi
done
CHECK="$(sudo -n python3 -c "import sqlite3; c = sqlite3.connect('file:$WORK/molodetz.db?mode=ro', uri=True); print(c.execute('pragma integrity_check').fetchone()[0])")"
test "$CHECK" = "ok" || { echo "snapshot integrity check failed: $CHECK"; exit 1; }
cd "$(dirname "$0")/.."
docker compose stop web
sudo -n rm -rf "$DEST/molodetz.db-wal" "$DEST/molodetz.db-shm" "$DEST/molodetz.db" "$DEST/uploads" "$DEST/keys" "$DEST/seo_reports"
sudo -n cp -a "$WORK/." "$DEST/"
docker compose up -d web
for i in $(seq 1 60); do curl -fs http://127.0.0.1:19847/health >/dev/null && break; sleep 1; done
curl -fs http://127.0.0.1:19847/health
echo "staging refreshed from $SRC"