-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathlabs-mongo-ctl.sh
executable file
·116 lines (101 loc) · 2.69 KB
/
labs-mongo-ctl.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#! /bin/bash
#
# Usage: labs-mongo-ctl.sh start|stop|status
#
# Start or stop the mongo server
#
prog=$0
exedir=`dirname $prog`
exe=`basename $prog`
set -e
source $exedir/labs-config.sh
source $exedir/labs-funcs.sh
init QMCDB_BASE="qmc"
init QMCDB_SRVR_IMG_NAME=mongo:latest
init QMCDB_SRVR_IMG_OPTS=""
init QMCDB_SRVR_CONTAINER_NAME=${QMCDB_BASE}-mongo
init QMCDB_SRVR_MONGO_PORT=32500
init QMCDB_DB_HOST_PATH=/data/qmcdb
function start {
dbstatus=`dbserver_status`
case $dbstatus in
"exited" )
echo "Restarting MongoDB server..." 1>&2
docker start $QMCDB_SRVR_CONTAINER_NAME > /dev/null
;;
"running" )
echo "MongoDB server ($QMCDB_SRVR_CONTAINER_NAME) is already" \
"running" 1>&2
;;
* )
run="docker run --name $QMCDB_SRVR_CONTAINER_NAME \
-v ${QMCDB_DB_HOST_DATAPATH}:/data/db \
-v ${QMCDB_DB_HOST_APPPATH}:/QMCDB \
-p ${QMCDB_SRVR_MONGO_PORT}:27017 -d \
$QMCDB_SRVR_IMG_NAME $QMCDB_SRVR_IMG_OPTS"
echo $run 1>&2
pid=`$run`
dbstatus=`dbserver_status`
if [ "$dbstatus" != "running" ]; then
echo "Failed to start server container"
return 1
else
echo "Started server container (${pid:1:12})."
fi
;;
esac
return 0
}
function stop {
dbstatus=`dbserver_status`
case $dbstatus in
"running" )
docker stop --time=3 $QMCDB_SRVR_CONTAINER_NAME > /dev/null
sleep 4
dbstatus=`dbserver_status`
[ "$dbstatus" != "running" ] && echo "Stopped server container."
;;
* )
echo "Server is already $dbstatus."
;;
esac
case $dbstatus in
"running" )
echo "Failed to stop server container"
return 1
;;
"exited" )
docker rm $QMCDB_SRVR_CONTAINER_NAME > /dev/null 2>&1 || \
echo "Warning: Failed to remove stopped container." 1>&2
;;
esac
return 0
}
function status {
dbstatus=`dbserver_status`
case $dbstatus in
"running" )
echo DB Server is running
;;
"exited" )
echo "DB Server has exited (but still listed)"
;;
* )
echo DB Server is not running
;;
esac
return 0
}
cmd=$1
shift
case $cmd in
"start" )
start "$@"
;;
"stop" )
stop
;;
"status" )
status
;;
esac