Skip to content

Commit 942f7e5

Browse files
Wrapper script for persistent docker setup
1 parent 2df3911 commit 942f7e5

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

scripts/docker-persistent.sh

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#!/bin/sh
2+
#
3+
# Script for running mongodb_consistent_backup under Docker
4+
# with persistent data container for data, config and logs.
5+
6+
ACTION=$1
7+
[ -z $1 ] && echo "Usage: $0 [backup|list|get] [action flags]" && exit 1
8+
9+
BACKUP_DIR=/mongodb_consistent_backup
10+
BACKUP_CNF=$BACKUP_DIR/mongodb-consistent-backup.conf
11+
BACKUP_IMAGE=mongodb_consistent_backup
12+
BACKUP_DATA_IMAGE=mongodb_consistent_backup-data
13+
MCB_FLAGS="--config $BACKUP_CNF"
14+
DOCKER_IMAGE=timvaillancourt/mongodb_consistent_backup:latest
15+
16+
if [ "$ACTION" = "backup" ]; then
17+
CNF=$2
18+
[ -z $2 ] && echo "Usage: $0 backup [mongodb-consistent-backup config file]" && exit 1
19+
20+
docker ps -a | grep -q "$BACKUP_DATA_IMAGE"
21+
if [ $? -gt 0 ]; then
22+
echo "# Creating persistent volume for Docker image: $DOCKER_IMAGE"
23+
docker create -v $BACKUP_DIR --name $BACKUP_DATA_IMAGE $DOCKER_IMAGE
24+
fi
25+
26+
if [ -f $CNF ]; then
27+
echo "# Loading config file $CNF into container"
28+
docker cp $CNF ${BACKUP_DATA_IMAGE}:${BACKUP_CNF}
29+
30+
echo "# Running Docker image: $DOCKER_IMAGE"
31+
docker run -i --name $BACKUP_IMAGE --rm --volumes-from $BACKUP_DATA_IMAGE $DOCKER_IMAGE $MCB_FLAGS
32+
else
33+
echo "# Config file $CNF does not exist!"
34+
exit 1
35+
fi
36+
elif [ "$ACTION" = "list" ]; then
37+
echo "# Listing backups in $BACKUP_DATA_IMAGE"
38+
docker run -it --rm --volumes-from $BACKUP_DATA_IMAGE --entrypoint /bin/find $DOCKER_IMAGE $BACKUP_DIR/data -maxdepth 2 -name "[0-9]*_*"
39+
elif [ "$ACTION" = "get" ]; then
40+
DIR=$2
41+
[ -z $DIR ] && echo "Usage: $0 get [backup path]" && exit 1
42+
docker cp $BACKUP_DATA_IMAGE:$DIR .
43+
fi

0 commit comments

Comments
 (0)