Compare commits
No commits in common. "backup-restore" and "base" have entirely different histories.
backup-res
...
base
20
README.md
20
README.md
@ -3,23 +3,3 @@
|
|||||||
|
|
||||||
This Git Repository intends to represent environments in Docker Compose. All environments are effectively a derivative of other environments. The original environment is the environment represented by the `base` branch. All derivative environments are represented by other branches. Those branches are named in the format `{core}.{parent}`.
|
This Git Repository intends to represent environments in Docker Compose. All environments are effectively a derivative of other environments. The original environment is the environment represented by the `base` branch. All derivative environments are represented by other branches. Those branches are named in the format `{core}.{parent}`.
|
||||||
|
|
||||||
## Backup & Restore
|
|
||||||
|
|
||||||
### Backup
|
|
||||||
|
|
||||||
A previously run Docker Compose environment is required in order to perform a backup. The Docker Compose resultant containers may or may not use volumes for persistence. It is assumed that the Docker Compose environment is stopped at the time of the backup.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
docker-compose stop
|
|
||||||
scripts/backup-data.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
This will result in the creation or replacement of the `data` directory. This will hold all the resources required for a subsequent *Restore* execution.
|
|
||||||
|
|
||||||
### Restore
|
|
||||||
|
|
||||||
A clean Docker Compose environment is **not** required in order to perform a restore. The script will destory any existing data that may exist at the time of execution. It will also stop and remove any existing Docker containers. The Docker Compose resultant containers may or may not use volumes for persistence.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
scripts/restore-data.sh
|
|
||||||
```
|
|
||||||
|
@ -1,73 +0,0 @@
|
|||||||
@echo off
|
|
||||||
|
|
||||||
REM This script performs a backup of key data in the Docker Compose Alfresco
|
|
||||||
REM environment that is started using the companion `docker-compose.yml`
|
|
||||||
REM file. It backs up the binary data and database. It ignores the search
|
|
||||||
REM engine and MQ server. This is not proper for a production environment.
|
|
||||||
|
|
||||||
REM Notice that we are not compressing any of this backup. We are counting on
|
|
||||||
REM Git's ability to only deal with differences to get far better effective
|
|
||||||
REM compression over of the data as it is verioned. Git also compresses these
|
|
||||||
REM files in transit and in storage anyway. By not putting them in ZIP files, we
|
|
||||||
REM use just as little disk space with one commit and probably 90% smaller over
|
|
||||||
REM 10 commits and 99% smaller over 100 commits.
|
|
||||||
|
|
||||||
call :prepare
|
|
||||||
call :backup
|
|
||||||
|
|
||||||
exit /B 0
|
|
||||||
|
|
||||||
:prepare
|
|
||||||
echo Preparing for the backup ...
|
|
||||||
|
|
||||||
set THISDIR_REL=%~dp0
|
|
||||||
set THISDIR=%THISDIR_REL:~0,-1%
|
|
||||||
set DOCKER_COMPOSE_DIR=%THISDIR%
|
|
||||||
set DATA_DIR=%DOCKER_COMPOSE_DIR%\data
|
|
||||||
|
|
||||||
echo Clearing previous backup (if one exists) ...
|
|
||||||
rd /s /q "%DATA_DIR%"
|
|
||||||
md "%DATA_DIR%"
|
|
||||||
|
|
||||||
exit /B
|
|
||||||
|
|
||||||
:backup
|
|
||||||
echo Performing a backup ...
|
|
||||||
exit /B
|
|
||||||
|
|
||||||
:backup_database
|
|
||||||
set CONTAINER_ID=%1
|
|
||||||
set SQL_SCHEMA_FILENAME=%2
|
|
||||||
set SQL_DATA_FILENAME=%3
|
|
||||||
set DB_NAME=%4
|
|
||||||
set DB_USERNAME=%5
|
|
||||||
set DB_DISPLAY=%6
|
|
||||||
|
|
||||||
echo Backing up the %DB_DISPLAY% database ...
|
|
||||||
|
|
||||||
echo Dumping %DB_DISPLAY% database schema ...
|
|
||||||
docker container exec %CONTAINER_ID% pg_dump -U %DB_USERNAME% -s -f /tmp/%SQL_SCHEMA_FILENAME% %DB_NAME%
|
|
||||||
|
|
||||||
echo Dumping %DB_DISPLAY% database data ...
|
|
||||||
docker container exec %CONTAINER_ID% pg_dump -U %DB_USERNAME% -a -f /tmp/%SQL_DATA_FILENAME% %DB_NAME%
|
|
||||||
|
|
||||||
echo Copying %DB_DISPLAY% database schema from Docker container ...
|
|
||||||
docker cp %CONTAINER_ID%:/tmp/%SQL_SCHEMA_FILENAME% "%DOCKER_COMPOSE_DIR%\data"
|
|
||||||
|
|
||||||
echo Copying %DB_DISPLAY% database data from Docker container ...
|
|
||||||
docker cp %CONTAINER_ID%:/tmp/%SQL_DATA_FILENAME% "%DOCKER_COMPOSE_DIR%\data"
|
|
||||||
|
|
||||||
exit /B
|
|
||||||
|
|
||||||
:backup_binaryData
|
|
||||||
set CONTAINER_ID=%1
|
|
||||||
set DATA_DIRECTORY=%2
|
|
||||||
set CONTAINER_PATH=%3
|
|
||||||
set DISPLAY=%4
|
|
||||||
|
|
||||||
echo Backing up the %DISPLAY% binary data ...
|
|
||||||
|
|
||||||
echo Copying %DISPLAY% binary data ...
|
|
||||||
docker cp "%CONTAINER_ID%:%CONTAINER_PATH%\%DATA_DIRECTORY%" "%DOCKER_COMPOSE_DIR%\data"
|
|
||||||
|
|
||||||
exit /B
|
|
@ -1,69 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# This script performs a backup of key data in the Docker Compose Alfresco
|
|
||||||
# environment that is started using the companion `docker-compose.yml`
|
|
||||||
# file. It backs up the binary data and database. It ignores the search
|
|
||||||
# engine and MQ server. This is not proper for a production environment.
|
|
||||||
|
|
||||||
# Notice that we are not compressing any of this backup. We are counting on
|
|
||||||
# Git's ability to only deal with differences to get far better effective
|
|
||||||
# compression over of the data as it is verioned. Git also compresses these
|
|
||||||
# files in transit and in storage anyway. By not putting them in ZIP files, we
|
|
||||||
# use just as little disk space with one commit and probably 90% smaller over
|
|
||||||
# 10 commits and 99% smaller over 100 commits.
|
|
||||||
|
|
||||||
prepare() {
|
|
||||||
echo "Preparing for the backup ..."
|
|
||||||
|
|
||||||
export THISDIR=`dirname "$(readlink -f "$0")"`
|
|
||||||
export DOCKER_COMPOSE_DIR=$THISDIR
|
|
||||||
export DATA_DIR=$DOCKER_COMPOSE_DIR/data
|
|
||||||
|
|
||||||
source "$THISDIR/common.sh"
|
|
||||||
|
|
||||||
echo "Clearing previous backup (if one exists) ..."
|
|
||||||
sudo rm -rf "$DATA_DIR"
|
|
||||||
mkdir -p "$DATA_DIR"
|
|
||||||
}
|
|
||||||
|
|
||||||
backup() {
|
|
||||||
echo "Performing a backup ..."
|
|
||||||
}
|
|
||||||
|
|
||||||
backup_database() {
|
|
||||||
CONTAINER_ID=$1
|
|
||||||
SQL_SCHEMA_FILENAME=$2
|
|
||||||
SQL_DATA_FILENAME=$3
|
|
||||||
DB_NAME=$4
|
|
||||||
DB_USERNAME=$5
|
|
||||||
DB_DISPLAY=$6
|
|
||||||
|
|
||||||
echo "Backing up the $DB_DISPLAY database ..."
|
|
||||||
|
|
||||||
echo "Dumping $DB_DISPLAY database schema ..."
|
|
||||||
docker container exec $CONTAINER_ID pg_dump -U $DB_USERNAME -s -f /tmp/$SQL_SCHEMA_FILENAME $DB_NAME
|
|
||||||
|
|
||||||
echo "Dumping $DB_DISPLAY database data ..."
|
|
||||||
docker container exec $CONTAINER_ID pg_dump -U $DB_USERNAME -a -f /tmp/$SQL_DATA_FILENAME $DB_NAME
|
|
||||||
|
|
||||||
echo "Copying $DB_DISPLAY database schema from Docker container ..."
|
|
||||||
docker cp $CONTAINER_ID:/tmp/$SQL_SCHEMA_FILENAME "${DOCKER_COMPOSE_DIR}/data"
|
|
||||||
|
|
||||||
echo "Copying $DB_DISPLAY database data from Docker container ..."
|
|
||||||
docker cp $CONTAINER_ID:/tmp/$SQL_DATA_FILENAME "${DOCKER_COMPOSE_DIR}/data"
|
|
||||||
}
|
|
||||||
|
|
||||||
backup_binaryData() {
|
|
||||||
CONTAINER_ID=$1
|
|
||||||
DATA_DIRECTORY=$2
|
|
||||||
CONTAINER_PATH=$3
|
|
||||||
DISPLAY=$4
|
|
||||||
|
|
||||||
echo "Backing up the $DISPLAY binary data ..."
|
|
||||||
|
|
||||||
echo "Copying $DISPLAY binary data ..."
|
|
||||||
docker cp -a "$CONTAINER_ID:$CONTAINER_PATH/$DATA_DIRECTORY" "${DOCKER_COMPOSE_DIR}/data"
|
|
||||||
}
|
|
||||||
|
|
||||||
prepare
|
|
||||||
backup
|
|
@ -1,93 +0,0 @@
|
|||||||
@echo off
|
|
||||||
|
|
||||||
call :%*
|
|
||||||
exit /B 0
|
|
||||||
|
|
||||||
:prepare_container
|
|
||||||
set SERVICE_NAME=%1
|
|
||||||
set SERVICE_DISPLAY=%2
|
|
||||||
|
|
||||||
echo Preparing the %SERVICE_DISPLAY% service or Docker container ...
|
|
||||||
|
|
||||||
echo Checking to see if %SERVICE_DISPLAY% service exists ...
|
|
||||||
set CONTAINER_ID=
|
|
||||||
for /f %%i in ('docker-compose --project-directory "%DOCKER_COMPOSE_DIR%" ps -q %SERVICE_NAME%') do set CONTAINER_ID=%%i
|
|
||||||
|
|
||||||
set CONTAINER_CREATED=
|
|
||||||
set CONTAINER_STARTED=
|
|
||||||
if "%CONTAINER_ID%" == "" (
|
|
||||||
call :create_container %*
|
|
||||||
) else (
|
|
||||||
call :check_container %*
|
|
||||||
)
|
|
||||||
|
|
||||||
exit /B
|
|
||||||
|
|
||||||
:create_container
|
|
||||||
set SERVICE_NAME=%1
|
|
||||||
set SERVICE_DISPLAY=%2
|
|
||||||
set CONTAINER_CREATED=1
|
|
||||||
|
|
||||||
echo %SERVICE_DISPLAY% service does not exist; creating and starting it ...
|
|
||||||
docker-compose --project-directory "%DOCKER_COMPOSE_DIR%" up --detach --no-deps %SERVICE_NAME%
|
|
||||||
|
|
||||||
echo Getting new %SERVICE_DISPLAY% service container ID ...
|
|
||||||
for /f %%i in ('docker-compose --project-directory "%DOCKER_COMPOSE_DIR%" ps -q %SERVICE_NAME%') do set CONTAINER_ID=%%i
|
|
||||||
echo Found %SERVICE_DISPLAY% Docker container: %CONTAINER_ID%
|
|
||||||
|
|
||||||
exit /B
|
|
||||||
|
|
||||||
:check_container
|
|
||||||
set SERVICE_NAME=%1
|
|
||||||
set SERVICE_DISPLAY=%2
|
|
||||||
|
|
||||||
echo Found %SERVICE_DISPLAY% Docker container: %CONTAINER_ID%
|
|
||||||
|
|
||||||
echo Checking to see if %SERVICE_DISPLAY% service is running ...
|
|
||||||
set CONTAINER_TOP=
|
|
||||||
for /f %%i in ('docker-compose --project-directory "%DOCKER_COMPOSE_DIR%" ps -q %SERVICE_NAME%') do set CONTAINER_TOP=%%i
|
|
||||||
|
|
||||||
if "%CONTAINER_TOP%" == "" (
|
|
||||||
call :start_container %*
|
|
||||||
) else (
|
|
||||||
echo %SERVICE_DISPLAY% service is running; will perform a hot backup ...
|
|
||||||
)
|
|
||||||
|
|
||||||
exit /B
|
|
||||||
|
|
||||||
:start_container
|
|
||||||
set SERVICE_NAME=%1
|
|
||||||
set SERVICE_DISPLAY=%2
|
|
||||||
set CONTAINER_STARTED=1
|
|
||||||
|
|
||||||
echo %SERVICE_DISPLAY% service is not running; starting it ...
|
|
||||||
docker-compose --project-directory "%DOCKER_COMPOSE_DIR%" start %SERVICE_NAME%
|
|
||||||
|
|
||||||
exit /B
|
|
||||||
|
|
||||||
:unwind_container
|
|
||||||
set SERVICE_NAME=%1
|
|
||||||
set SERVICE_DISPLAY=%2
|
|
||||||
set CONTAINER_CREATED=%3
|
|
||||||
set CONTAINER_STARTED=%4
|
|
||||||
|
|
||||||
echo Unwinding the %SERVICE_DISPLAY% service or Docker container ...
|
|
||||||
|
|
||||||
if "%CONTAINER_CREATED%" == "1" (
|
|
||||||
echo %SERVICE_DISPLAY% service did not exist; stopping and destorying it ...
|
|
||||||
docker-compose --project-directory "%DOCKER_COMPOSE_DIR%" rm --stop --force %SERVICE_NAME%
|
|
||||||
)
|
|
||||||
if "%CONTAINER_STARTED%" == "1" (
|
|
||||||
echo %SERVICE_DISPLAY% service was not running; stopping it ...
|
|
||||||
docker-compose --project-directory "%DOCKER_COMPOSE_DIR%" stop %SERVICE_NAME%
|
|
||||||
)
|
|
||||||
|
|
||||||
exit /B
|
|
||||||
|
|
||||||
:wait_container_postgres
|
|
||||||
set CONTAINER_ID=%1
|
|
||||||
|
|
||||||
echo Waiting for PostgreSQL database to become available ...
|
|
||||||
docker container exec %CONTAINER_ID% sh -c "until [ -f /var/run/postgresql/.s.PGSQL.5432.lock ]; do sleep 1; done"
|
|
||||||
|
|
||||||
exit /B
|
|
@ -1,81 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
prepare_container() {
|
|
||||||
SERVICE_NAME=$1
|
|
||||||
SERVICE_DISPLAY=$2
|
|
||||||
|
|
||||||
echo "Preparing the $SERVICE_DISPLAY service or Docker container ..."
|
|
||||||
|
|
||||||
echo "Checking to see if $SERVICE_DISPLAY service exists ..."
|
|
||||||
export CONTAINER_ID=`docker-compose --project-directory "${DOCKER_COMPOSE_DIR}" ps -q $SERVICE_NAME`
|
|
||||||
|
|
||||||
unset CONTAINER_CREATED
|
|
||||||
unset CONTAINER_STARTED
|
|
||||||
if [[ -z $CONTAINER_ID ]]; then
|
|
||||||
create_container $*
|
|
||||||
else
|
|
||||||
check_container $*
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
create_container() {
|
|
||||||
SERVICE_NAME=$1
|
|
||||||
SERVICE_DISPLAY=$2
|
|
||||||
export CONTAINER_CREATED=1
|
|
||||||
|
|
||||||
echo "$SERVICE_DISPLAY service does not exist; creating and starting it ..."
|
|
||||||
docker-compose --project-directory "${DOCKER_COMPOSE_DIR}" up --detach --no-deps $SERVICE_NAME
|
|
||||||
|
|
||||||
echo "Getting new $SERVICE_DISPLAY service container ID ..."
|
|
||||||
export CONTAINER_ID=`docker-compose --project-directory "${DOCKER_COMPOSE_DIR}" ps -q $SERVICE_NAME`
|
|
||||||
echo "Found $SERVICE_DISPLAY Docker container: $CONTAINER_ID"
|
|
||||||
}
|
|
||||||
|
|
||||||
check_container() {
|
|
||||||
SERVICE_NAME=$1
|
|
||||||
SERVICE_DISPLAY=$2
|
|
||||||
|
|
||||||
echo "Found $SERVICE_DISPLAY Docker container: $CONTAINER_ID"
|
|
||||||
|
|
||||||
echo "Checking to see if $SERVICE_DISPLAY service is running ..."
|
|
||||||
CONTAINER_TOP=`docker-compose --project-directory "${DOCKER_COMPOSE_DIR}" top $SERVICE_NAME`
|
|
||||||
|
|
||||||
if [[ -z $CONTAINER_TOP ]]; then
|
|
||||||
start_container $*
|
|
||||||
else
|
|
||||||
echo "$SERVICE_DISPLAY service is running; will perform while running ..."
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
start_container() {
|
|
||||||
SERVICE_NAME=$1
|
|
||||||
SERVICE_DISPLAY=$2
|
|
||||||
export CONTAINER_STARTED=1
|
|
||||||
|
|
||||||
echo "$SERVICE_DISPLAY service is not running; starting it ..."
|
|
||||||
docker-compose --project-directory "${DOCKER_COMPOSE_DIR}" start $SERVICE_NAME
|
|
||||||
}
|
|
||||||
|
|
||||||
unwind_container() {
|
|
||||||
SERVICE_NAME=$1
|
|
||||||
SERVICE_DISPLAY=$2
|
|
||||||
CONTAINER_CREATED=$3
|
|
||||||
CONTAINER_STARTED=$4
|
|
||||||
|
|
||||||
echo "Unwinding the $SERVICE_DISPLAY service or Docker container ..."
|
|
||||||
|
|
||||||
if [[ $CONTAINER_CREATED ]]; then
|
|
||||||
echo "$SERVICE_DISPLAY service did not exist; stopping and destorying it ..."
|
|
||||||
docker-compose --project-directory "${DOCKER_COMPOSE_DIR}" rm --stop --force $SERVICE_NAME
|
|
||||||
elif [[ $CONTAINER_STARTED ]]; then
|
|
||||||
echo "$SERVICE_DISPLAY service was not running; stopping it ..."
|
|
||||||
docker-compose --project-directory "${DOCKER_COMPOSE_DIR}" stop $SERVICE_NAME
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
wait_container_postgres() {
|
|
||||||
CONTAINER_ID=$1
|
|
||||||
|
|
||||||
echo "Waiting for PostgreSQL database to become available ..."
|
|
||||||
docker container exec $CONTAINER_ID sh -c "until [ -f /var/run/postgresql/.s.PGSQL.5432.lock ]; do sleep 1; done"
|
|
||||||
}
|
|
@ -1,81 +0,0 @@
|
|||||||
@echo off
|
|
||||||
|
|
||||||
call :prepare
|
|
||||||
call :restore
|
|
||||||
|
|
||||||
exit /B 0
|
|
||||||
|
|
||||||
:prepare
|
|
||||||
echo Preparing to restore ...
|
|
||||||
|
|
||||||
set THISDIR_REL=%~dp0
|
|
||||||
set THISDIR=%THISDIR_REL:~0,-1%
|
|
||||||
set DOCKER_COMPOSE_DIR=%THISDIR%
|
|
||||||
set DATA_DIR=%DOCKER_COMPOSE_DIR%/data
|
|
||||||
|
|
||||||
exit /B
|
|
||||||
|
|
||||||
:restore
|
|
||||||
if exist "%DATA_DIR%" (
|
|
||||||
echo Restore data directory found
|
|
||||||
|
|
||||||
echo Removing existing data ...
|
|
||||||
docker-compose --project-directory "%DOCKER_COMPOSE_DIR%" down --volumes
|
|
||||||
|
|
||||||
setlocal ENABLEDELAYEDEXPANSION
|
|
||||||
|
|
||||||
echo Performing a restore ...
|
|
||||||
|
|
||||||
endlocal
|
|
||||||
) else (
|
|
||||||
echo Restore data directory not found; doing nothing ...
|
|
||||||
)
|
|
||||||
|
|
||||||
exit /B
|
|
||||||
|
|
||||||
:restore_database
|
|
||||||
set CONTAINER_ID=%1
|
|
||||||
set SQL_SCHEMA_FILENAME=%2
|
|
||||||
set SQL_DATA_FILENAME=%3
|
|
||||||
set DB_NAME=%4
|
|
||||||
set DB_USERNAME=%5
|
|
||||||
set DISPLAY_NAME=%6
|
|
||||||
|
|
||||||
if exist "%DATA_DIR%\%SQL_SCHEMA_FILENAME%" (
|
|
||||||
echo Restoring the %DISPLAY_NAME% database ...
|
|
||||||
|
|
||||||
wait_pgdb %CONTAINER_ID%
|
|
||||||
|
|
||||||
echo SET session_replication_role = 'replica'; > c:\Windows\Temp\db-data.sql
|
|
||||||
type "%DATA_DIR%\%SQL_DATA_FILENAME%" >> c:\Windows\Temp\db-data.sql
|
|
||||||
|
|
||||||
echo Uploading %DISPLAY_NAME% database schema to Docker container ...
|
|
||||||
docker cp "%DATA_DIR%\%SQL_SCHEMA_FILENAME%" %CONTAINER_ID%:/tmp
|
|
||||||
|
|
||||||
echo Uploading %DISPLAY_NAME% database data to Docker container ...
|
|
||||||
docker cp c:\Windows\Temp\db-data.sql %CONTAINER_ID%:/tmp
|
|
||||||
del c:\Windows\Temp\db-data.sql
|
|
||||||
|
|
||||||
echo Restoring %DISPLAY_NAME% database schema ...
|
|
||||||
docker container exec %CONTAINER_ID% psql -U %DB_USERNAME% -f /tmp/%SQL_SCHEMA_FILENAME% %DB_NAME%
|
|
||||||
|
|
||||||
echo Restoring %DISPLAY_NAME% database data ...
|
|
||||||
docker container exec %CONTAINER_ID% psql -U %DB_USERNAME% -f /tmp/db-data.sql %DB_NAME%
|
|
||||||
)
|
|
||||||
|
|
||||||
exit /B
|
|
||||||
|
|
||||||
:restore_binaryData
|
|
||||||
set CONTAINER_ID=%1
|
|
||||||
set DATA_DIRECTORY=%2
|
|
||||||
set CONTAINER_PATH=%3
|
|
||||||
set DISPLAY_NAME=%4
|
|
||||||
|
|
||||||
if exist "%DATA_DIR%\%DATA_DIRECTORY%" (
|
|
||||||
echo Restoring the %DISPLAY_NAME% binary data ...
|
|
||||||
|
|
||||||
echo Copying %DISPLAY_NAME% binary data ...
|
|
||||||
docker cp "%DATA_DIR%\%DATA_DIRECTORY%" "%CONTAINER_ID%:%CONTAINER_PATH%"
|
|
||||||
)
|
|
||||||
|
|
||||||
exit /B
|
|
@ -1,69 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
prepare() {
|
|
||||||
echo "Preparing to restore ..."
|
|
||||||
|
|
||||||
export THISDIR=`dirname "$(readlink -f "$0")"`
|
|
||||||
export DOCKER_COMPOSE_DIR=$THISDIR
|
|
||||||
export DATA_DIR=$DOCKER_COMPOSE_DIR/data
|
|
||||||
|
|
||||||
source "$THISDIR/common.sh"
|
|
||||||
}
|
|
||||||
|
|
||||||
restore() {
|
|
||||||
if [ -d "${DATA_DIR}" ]; then
|
|
||||||
echo "Restore data directory found"
|
|
||||||
|
|
||||||
echo "Removing existing data ..."
|
|
||||||
docker-compose --project-directory "${DOCKER_COMPOSE_DIR}" down --volumes
|
|
||||||
|
|
||||||
echo "Performing a restore ..."
|
|
||||||
else
|
|
||||||
echo "Restore data directory not found; doing nothing ..."
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
restore_database() {
|
|
||||||
CONTAINER_ID=$1
|
|
||||||
SQL_SCHEMA_FILENAME=$2
|
|
||||||
SQL_DATA_FILENAME=$3
|
|
||||||
DB_NAME=$4
|
|
||||||
DB_USERNAME=$5
|
|
||||||
DISPLAY_NAME=$6
|
|
||||||
|
|
||||||
if [ -f "${DATA_DIR}/$SQL_SCHEMA_FILENAME" ]; then
|
|
||||||
echo "Restoring the $DISPLAY_NAME database ..."
|
|
||||||
|
|
||||||
echo "SET session_replication_role = 'replica';" | cat - "${DATA_DIR}/$SQL_DATA_FILENAME" > /tmp/db-data.sql
|
|
||||||
|
|
||||||
echo "Uploading $DISPLAY_NAME database schema to Docker container ..."
|
|
||||||
docker cp "${DATA_DIR}/$SQL_SCHEMA_FILENAME" $CONTAINER_ID:/tmp
|
|
||||||
|
|
||||||
echo "Uploading $DISPLAY_NAME database data to Docker container ..."
|
|
||||||
docker cp /tmp/db-data.sql $CONTAINER_ID:/tmp
|
|
||||||
rm /tmp/db-data.sql
|
|
||||||
|
|
||||||
echo "Restoring $DISPLAY_NAME database schema ..."
|
|
||||||
docker container exec $CONTAINER_ID psql -U $DB_USERNAME -f /tmp/$SQL_SCHEMA_FILENAME $DB_NAME
|
|
||||||
|
|
||||||
echo "Restoring $DISPLAY_NAME database data ..."
|
|
||||||
docker container exec $CONTAINER_ID psql -U $DB_USERNAME -f /tmp/db-data.sql $DB_NAME
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
restore_binaryData() {
|
|
||||||
CONTAINER_ID=$1
|
|
||||||
DATA_DIRECTORY=$2
|
|
||||||
CONTAINER_PATH=$3
|
|
||||||
DISPLAY_NAME=$4
|
|
||||||
|
|
||||||
if [ -d "${DATA_DIR}/$DATA_DIRECTORY" ]; then
|
|
||||||
echo "Restoring the $DISPLAY_NAME binary data ..."
|
|
||||||
|
|
||||||
echo "Copying $DISPLAY_NAME binary data ..."
|
|
||||||
sudo docker cp "${DATA_DIR}/$DATA_DIRECTORY" "$CONTAINER_ID:$CONTAINER_PATH"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
prepare
|
|
||||||
restore
|
|
Loading…
x
Reference in New Issue
Block a user