docker-compose.yml (postgres 16 + odoo:19.0), odoo.conf, env template, and setup/backup/update/demo-data scripts. update.sh always backs up and records the previous image before upgrading modules, per the lesson paid for on the Frappe track. .gitattributes pins LF on shell scripts so they don't break under the container's bash on checkout from Windows. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
25 lines
820 B
Bash
25 lines
820 B
Bash
#!/bin/bash
|
|
# Dumps the Odoo database and filestore to backups/<timestamp>/.
|
|
# Usage: ./scripts/backup.sh
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
cd "$SCRIPT_DIR"
|
|
|
|
set -a; [ -f .env ] && source .env; set +a
|
|
DB_NAME="${ODOO_DB_NAME:-school}"
|
|
POSTGRES_USER="${POSTGRES_USER:-odoo}"
|
|
|
|
STAMP="$(date +%Y%m%d-%H%M%S)"
|
|
OUT_DIR="backups/${STAMP}"
|
|
mkdir -p "$OUT_DIR"
|
|
|
|
echo "[->] Dumping database '${DB_NAME}'..."
|
|
docker compose exec -T db pg_dump -U "$POSTGRES_USER" -Fc "$DB_NAME" > "${OUT_DIR}/${DB_NAME}.dump"
|
|
|
|
echo "[->] Archiving filestore..."
|
|
docker compose exec -T odoo tar -czf - -C "/var/lib/odoo/filestore" "${DB_NAME}" 2>/dev/null \
|
|
> "${OUT_DIR}/${DB_NAME}-filestore.tar.gz" || echo "[!] No filestore found for ${DB_NAME} yet — skipping."
|
|
|
|
echo "[OK] Backup written to ${OUT_DIR}/"
|