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}"
|
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
|
case "$BACKUP_ROOT" in
|
||||||
"$DEPLOY_PATH"|"$DEPLOY_PATH"/*)
|
"$DEPLOY_PATH"|"$DEPLOY_PATH"/*)
|
||||||
echo "Backup path must be outside deploy path: $BACKUP_ROOT"
|
echo "Backup path must be outside deploy path: $BACKUP_ROOT"
|
||||||
@@ -90,13 +90,10 @@ jobs:
|
|||||||
|
|
||||||
if [ -d "$DEPLOY_PATH/.git" ]; then
|
if [ -d "$DEPLOY_PATH/.git" ]; then
|
||||||
mkdir -p "$BACKUP_ROOT"
|
mkdir -p "$BACKUP_ROOT"
|
||||||
cd "$DEPLOY_PATH"
|
echo "Starting docker-based backup..."
|
||||||
|
|
||||||
if [ -f Makefile ] && [ -f scripts/backup.sh ]; then
|
docker exec itam-backend mysqldump -u"$DB_USER" -p"$DB_PASS" -h"$DB_HOST" "$DB_NAME" > "$BACKUP_ROOT/backup_$(date +%Y%m%d).sql"
|
||||||
make predeploy-backup BACKUP_ROOT="$BACKUP_ROOT"
|
echo "Backup completed successfully."
|
||||||
else
|
|
||||||
echo "Skipping pre-deploy backup because current deployed revision does not contain Makefile backup tooling."
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "Skipping pre-deploy backup because no existing deployment was found."
|
echo "Skipping pre-deploy backup because no existing deployment was found."
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ ENV NODE_ENV=production
|
|||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# Install curl for health checks and dumb-init for proper signal handling
|
# 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 files
|
||||||
COPY package*.json ./
|
COPY package*.json ./
|
||||||
|
|||||||
4
Makefile
4
Makefile
@@ -26,8 +26,8 @@ files-backup:
|
|||||||
full-backup:
|
full-backup:
|
||||||
@ENV_FILE="$(ENV_FILE)" BACKUP_ROOT="$(BACKUP_ROOT)" sh "$(BACKUP_SCRIPT)" full
|
@ENV_FILE="$(ENV_FILE)" BACKUP_ROOT="$(BACKUP_ROOT)" sh "$(BACKUP_SCRIPT)" full
|
||||||
|
|
||||||
predeploy-backup:
|
# predeploy-backup:
|
||||||
@ENV_FILE="$(ENV_FILE)" BACKUP_ROOT="$(BACKUP_ROOT)" sh "$(BACKUP_SCRIPT)" full
|
# @ENV_FILE="$(ENV_FILE)" BACKUP_ROOT="$(BACKUP_ROOT)" sh "$(BACKUP_SCRIPT)" full
|
||||||
|
|
||||||
cleanup-backups:
|
cleanup-backups:
|
||||||
@BACKUP_ROOT="$(BACKUP_ROOT)" RETENTION_DAYS="$(RETENTION_DAYS)" sh "$(BACKUP_SCRIPT)" cleanup
|
@BACKUP_ROOT="$(BACKUP_ROOT)" RETENTION_DAYS="$(RETENTION_DAYS)" sh "$(BACKUP_SCRIPT)" cleanup
|
||||||
Reference in New Issue
Block a user