feat: implement container-based backup using docker exec
This commit is contained in:
@@ -80,7 +80,7 @@ jobs:
|
||||
|
||||
EFFECTIVE_BACKUP_ROOT="${PROD_BACKUP_ROOT:-/home/user/dachs_backups}"
|
||||
|
||||
ssh "${PROD_USER}@${PROD_HOST}" "export DEPLOY_PATH='${PROD_DEPLOY_PATH}' BACKUP_ROOT='${EFFECTIVE_BACKUP_ROOT}'; sh -eu -s" <<'REMOTE_BACKUP'
|
||||
ssh "${PROD_USER}@${PROD_HOST}" "export DEPLOY_PATH='${PROD_DEPLOY_PATH}' BACKUP_ROOT='${EFFECTIVE_BACKUP_ROOT}' DB_USER='${DB_USER}' DB_PASS='${DB_PASS}' DB_NAME='${DB_NAME}' DB_HOST='${DB_HOST}'; sh -eu -s" <<'REMOTE_BACKUP'
|
||||
case "$BACKUP_ROOT" in
|
||||
"$DEPLOY_PATH"|"$DEPLOY_PATH"/*)
|
||||
echo "Backup path must be outside deploy path: $BACKUP_ROOT"
|
||||
@@ -90,13 +90,10 @@ jobs:
|
||||
|
||||
if [ -d "$DEPLOY_PATH/.git" ]; then
|
||||
mkdir -p "$BACKUP_ROOT"
|
||||
cd "$DEPLOY_PATH"
|
||||
echo "Starting docker-based backup..."
|
||||
|
||||
if [ -f Makefile ] && [ -f scripts/backup.sh ]; then
|
||||
make predeploy-backup BACKUP_ROOT="$BACKUP_ROOT"
|
||||
else
|
||||
echo "Skipping pre-deploy backup because current deployed revision does not contain Makefile backup tooling."
|
||||
fi
|
||||
docker exec itam-backend mysqldump -u"$DB_USER" -p"$DB_PASS" -h"$DB_HOST" "$DB_NAME" > "$BACKUP_ROOT/backup_$(date +%Y%m%d).sql"
|
||||
echo "Backup completed successfully."
|
||||
else
|
||||
echo "Skipping pre-deploy backup because no existing deployment was found."
|
||||
fi
|
||||
|
||||
@@ -8,7 +8,7 @@ ENV NODE_ENV=production
|
||||
WORKDIR /app
|
||||
|
||||
# Install curl for health checks and dumb-init for proper signal handling
|
||||
RUN apk add --no-cache curl dumb-init
|
||||
RUN apk add --no-cache curl dumb-init mysql-client
|
||||
|
||||
# Copy package files
|
||||
COPY package*.json ./
|
||||
|
||||
4
Makefile
4
Makefile
@@ -26,8 +26,8 @@ files-backup:
|
||||
full-backup:
|
||||
@ENV_FILE="$(ENV_FILE)" BACKUP_ROOT="$(BACKUP_ROOT)" sh "$(BACKUP_SCRIPT)" full
|
||||
|
||||
predeploy-backup:
|
||||
@ENV_FILE="$(ENV_FILE)" BACKUP_ROOT="$(BACKUP_ROOT)" sh "$(BACKUP_SCRIPT)" full
|
||||
# predeploy-backup:
|
||||
# @ENV_FILE="$(ENV_FILE)" BACKUP_ROOT="$(BACKUP_ROOT)" sh "$(BACKUP_SCRIPT)" full
|
||||
|
||||
cleanup-backups:
|
||||
@BACKUP_ROOT="$(BACKUP_ROOT)" RETENTION_DAYS="$(RETENTION_DAYS)" sh "$(BACKUP_SCRIPT)" cleanup
|
||||
Reference in New Issue
Block a user