diff --git a/Makefile b/Makefile index cc38a778a..4fd84eb90 100644 --- a/Makefile +++ b/Makefile @@ -4,10 +4,17 @@ start-deps: docker compose up bats-deps -d start-frappe: - docker compose up frappe -d + ./dev/erpnext/start.sh -clean-frappe: - ./dev/clean-frappe +stop-frappe: + docker compose down frappe + +reset-frappe: + ./dev/erpnext/clean.sh + ./dev/erpnext/start.sh + @echo "Waiting for frappe to initialize..." + @sleep 60 + ./dev/erpnext/restore.sh dev/erpnext/backups/20260123_132015-frontend-database.sql.gz start-deps-integration: docker compose up integration-deps -d diff --git a/dev/erpnext/backup.sh b/dev/erpnext/backup.sh new file mode 100755 index 000000000..230d68296 --- /dev/null +++ b/dev/erpnext/backup.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# Create backups directory on host if it doesn't exist +BACKUP_DIR="$(dirname "$0")/backups" +mkdir -p "$BACKUP_DIR" + +docker exec -it flash-frappe-frontend-1 mkdir -p /tmp/backups + +# Run the backup inside the container and capture output +BACKUP_OUTPUT=$(docker exec flash-frappe-frontend-1 bench --site frontend backup --backup-path /tmp/backups) + +# Extract the database path from the output line containing "Database:" +BACKUP_FILE=$(echo "$BACKUP_OUTPUT" | grep "Database:" | awk '{print $2}') +echo $BACKUP_FILE +docker cp flash-frappe-frontend-1:$BACKUP_FILE "$BACKUP_DIR/" + +echo "Backups saved to: $BACKUP_DIR" diff --git a/dev/erpnext/backups/20260123_132015-frontend-database.sql.gz b/dev/erpnext/backups/20260123_132015-frontend-database.sql.gz new file mode 100644 index 000000000..f9f2bc0ed Binary files /dev/null and b/dev/erpnext/backups/20260123_132015-frontend-database.sql.gz differ diff --git a/dev/clean-frappe b/dev/erpnext/clean.sh similarity index 100% rename from dev/clean-frappe rename to dev/erpnext/clean.sh diff --git a/dev/erpnext/restore.sh b/dev/erpnext/restore.sh new file mode 100755 index 000000000..07da800a6 --- /dev/null +++ b/dev/erpnext/restore.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# Check if backup file is provided as argument +if [ -z "$1" ]; then + echo "Usage: $0 " + echo "Example: $0 backups/20260122_062420-frontend-database.sql.gz" + exit 1 +fi + +BACKUP_FILE="$1" +DB_PASSWORD="admin" # defined in docker compose + +# Check if backup file exists +if [ ! -f "$BACKUP_FILE" ]; then + echo "Error: Backup file '$BACKUP_FILE' not found" + exit 1 +fi + +# Get just the filename from the path +BACKUP_FILENAME=$(basename "$BACKUP_FILE") + +# Copy the backup file from host to container restore directory +docker exec -it flash-frappe-frontend-1 mkdir -p /tmp/restore +docker cp "$BACKUP_FILE" flash-frappe-frontend-1:/tmp/restore/"$BACKUP_FILENAME" + +# Restore the database inside the container with the password +docker exec -it flash-frappe-frontend-1 bench --site frontend restore --db-root-password "$DB_PASSWORD" /tmp/restore/"$BACKUP_FILENAME" diff --git a/dev/erpnext/start.sh b/dev/erpnext/start.sh new file mode 100755 index 000000000..e65ee19f2 --- /dev/null +++ b/dev/erpnext/start.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +docker compose up frappe -d + +echo "Login to http://frontend.local:8080/#login" +echo "Username: Administrator" +echo "Password: admin" \ No newline at end of file