Skip to content

Commit d40742a

Browse files
committed
Refactoring backup/restore and Makefile
1 parent 52635d6 commit d40742a

File tree

4 files changed

+59
-27
lines changed

4 files changed

+59
-27
lines changed

Makefile

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,24 +38,20 @@ rebuild:
3838
#############################
3939

4040
mysql-backup:
41-
docker-compose run --rm --no-deps app root bash /docker/bin/backup.sh mysql
41+
bash ./bin/backup.sh mysql
4242

4343
mysql-restore:
44-
docker-compose run --rm --no-deps app root bash /docker/bin/restore.sh mysql
44+
bash ./bin/restore.sh mysql
4545

4646
#############################
4747
# Solr
4848
#############################
4949

5050
solr-backup:
51-
docker-compose stop solr
52-
docker-compose run --rm --no-deps app root bash /docker/bin/backup.sh solr
53-
docker-compose start solr
51+
bash ./bin/backup.sh solr
5452

5553
solr-restore:
56-
docker-compose stop solr
57-
docker-compose run --rm --no-deps app root bash /docker/bin/restore.sh solr
58-
docker-compose start solr
54+
bash ./bin/restore.sh solr
5955

6056
#############################
6157
# General
@@ -68,10 +64,10 @@ build:
6864
bash bin/build.sh
6965

7066
bash:
71-
docker-compose run --rm app bash
67+
docker exec -ti "`docker-compose ps -q app`" 'bash'
7268

7369
root:
74-
docker-compose run --rm app root
70+
docker exec -ti "`docker-compose ps -q app`" 'root'
7571

7672
#############################
7773
# Argument fix workaround

bin/.config.sh

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,22 @@ execInDir() {
5252

5353
sh -c "cd \"$1\" && $2"
5454
}
55+
56+
dockerContainerId() {
57+
echo "$(docker-compose ps -q "$1" 2> /dev/null || echo "")"
58+
}
59+
60+
dockerExec() {
61+
docker exec -i "$(docker-compose ps -q app)" $@
62+
}
63+
64+
dockerCopyFrom() {
65+
PATH_DOCKER="$1"
66+
PATH_HOST="$2"
67+
docker cp "$(docker-compose ps -q app):${PATH_DOCKER}" "${PATH_HOST}"
68+
}
69+
dockerCopyTo() {
70+
PATH_HOST="$1"
71+
PATH_DOCKER="$2"
72+
docker cp "${PATH_HOST}" "$(docker-compose ps -q app):${PATH_DOCKER}"
73+
}

bin/backup.sh

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,28 @@ case "$1" in
2525
fi
2626

2727
logMsg "Starting MySQL backup..."
28-
mysqldump --opt --single-transaction --events --all-databases --routines --comments | bzip2 > "${BACKUP_DIR}/${BACKUP_MYSQL_FILE}"
28+
dockerExec mysqldump --opt --single-transaction --events --all-databases --routines --comments | bzip2 > "${BACKUP_DIR}/${BACKUP_MYSQL_FILE}"
2929
logMsg "Finished"
3030
;;
3131

3232
###################################
3333
## Solr
3434
###################################
3535
"solr")
36-
if [ -f "${BACKUP_DIR}/${BACKUP_SOLR_FILE}" ]; then
37-
logMsg "Removing old backup file..."
38-
rm -f -- "${BACKUP_DIR}/${BACKUP_SOLR_FILE}"
36+
if [[ -n "$(dockerContainerId solr)" ]]; then
37+
logMsg "Starting Solr backup..."
38+
docker-compose stop solr
39+
40+
if [ -f "${BACKUP_DIR}/${BACKUP_SOLR_FILE}" ]; then
41+
logMsg "Removing old backup file..."
42+
rm -f -- "${BACKUP_DIR}/${BACKUP_SOLR_FILE}"
43+
fi
44+
dockerExec tar -cP --to-stdout /storage/solr/ | bzip2 > "${BACKUP_DIR}/${BACKUP_SOLR_FILE}"
45+
46+
docker-compose start solr
47+
logMsg "Finished"
48+
else
49+
echo "[WARNING] Skipping solr backup, no such container"
3950
fi
40-
41-
logMsg "Starting Solr backup..."
42-
tar jcPf "${BACKUP_DIR}/${BACKUP_SOLR_FILE}" /storage/solr/
43-
logMsg "Finished"
4451
;;
4552
esac

bin/restore.sh

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ case "$1" in
2121
"mysql")
2222
if [ -f "${BACKUP_DIR}/${BACKUP_MYSQL_FILE}" ]; then
2323
logMsg "Starting MySQL restore..."
24-
bzcat "${BACKUP_DIR}/${BACKUP_MYSQL_FILE}" | mysql
24+
bzcat "${BACKUP_DIR}/${BACKUP_MYSQL_FILE}" | dockerExec mysql
2525
logMsg "Finished"
2626
else
2727
errorMsg "MySQL backup file not found"
@@ -33,15 +33,25 @@ case "$1" in
3333
## Solr
3434
###################################
3535
"solr")
36-
if [ -f "${BACKUP_DIR}/${BACKUP_SOLR_FILE}" ]; then
37-
logMsg "Starting Solr restore..."
38-
rm -rf /storage/solr/* && mkdir -p /storage/solr/
39-
chmod 777 /storage/solr/
40-
tar jxPf "${BACKUP_DIR}/${BACKUP_SOLR_FILE}" -C /
41-
logMsg "Finished"
36+
if [[ -n "$(dockerContainerId solr)" ]]; then
37+
if [ -f "${BACKUP_DIR}/${BACKUP_SOLR_FILE}" ]; then
38+
logMsg "Starting Solr restore..."
39+
docker-compose stop solr
40+
41+
dockerExec rm -rf /storage/solr/
42+
dockerExec mkdir -p /storage/solr/
43+
dockerExec chmod 777 /storage/solr/
44+
dockerCopyTo "${BACKUP_DIR}/${BACKUP_SOLR_FILE}" "/tmp/solr-restore.tbz2"
45+
dockerExec tar -jxPf "/tmp/solr-restore.tbz2" -C /
46+
47+
docker-compose start solr
48+
logMsg "Finished"
49+
else
50+
errorMsg "Solr backup file not found"
51+
exit 1
52+
fi
4253
else
43-
errorMsg "Solr backup file not found"
44-
exit 1
54+
echo "[WARNING] Skipping solr restore, no such container"
4555
fi
4656
;;
4757
esac

0 commit comments

Comments
 (0)