-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathdeploy.sh
More file actions
executable file
·137 lines (117 loc) · 3.41 KB
/
deploy.sh
File metadata and controls
executable file
·137 lines (117 loc) · 3.41 KB
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#!/bin/bash
set -ueo pipefail
TYPE=""
main() {
parseargs "$@"
# Check if secret.js file exists
if [[ ! -f server/secret.js ]]; then
echo -e "${BOLD}File missing${OFF}: server/secret.js (Please read README.md)"
exit 1
fi
case $TYPE in
backup) deploy_backup ;;
dev) deploy_dev ;;
init) deploy_init ;;
kuejs) deploy_kuejs ;;
mongo) deploy_mongo ;;
mongo_express) deploy_mongo_express ;;
prod) deploy_prod ;;
redis) deploy_redis ;;
restore) deploy_restore ;;
stop) deploy_stop ;;
worker) deploy_worker ;;
*)
echo -e "${BOLD}Error${OFF}: Type flag is required."
help_details
;;
esac
}
parseargs() {
while getopts hp:t: FLAG; do
case $FLAG in
h) help_details ;;
t) TYPE=$OPTARG ;;
*) echo "Unexpected option" && HELP_DETAILS && exit 1 ;;
esac
done
}
BOLD='\e[1;31m' # Bold Red
REV='\e[1;32m' # Bold Green
OFF='\e[0m'
#Help function
help_details() {
echo -e "${REV}TYPE${OFF}: Can be one of dev, prod, beta, init, mongo or mongo-express"
exit 1
}
echo_info() {
echo -e "${REV}${1}${OFF}"
}
deploy_prod() {
docker-compose down
docker rmi $(docker images -f "dangling=true" -q) || ret=$?
git pull origin
git checkout master
docker-compose build
docker-compose up &
sleep 5s
echo_info "Sleep complete"
docker cp server/secret.js cpps_app_1:/home/src/server/
docker exec -itd cpps_app_1 /bin/bash -c "gulp production && forever start server/index.js"
docker exec -itd cpps_app_1 forever start server/node_modules/queue/worker.js
echo_info "Done"
}
deploy_dev() {
docker-compose down
docker rmi $(docker images -f "dangling=true" -q) || ret=$?
docker-compose build
docker-compose up &
sleep 5s
docker cp server/secret.js cpps_app_1:/home/src/server/
docker exec -itd cpps_app_1 /bin/bash -c "cd /root/src && node server/node_modules/queue/worker.js"
docker exec -it cpps_app_1 /bin/bash -c "cd /root/src && yarn install && gulp"
}
deploy_mongo() {
docker exec -it cpps_db_1 mongo
}
deploy_mongo_express() {
docker run -it --rm \
--name mongo-express \
--network cpps_ntw \
--link cpps_db_1:mongo \
-p 8081:8081 \
-e ME_CONFIG_OPTIONS_EDITORTHEME="ambiance" \
mongo-express
}
deploy_init() {
docker exec -it cpps_app_1 node server/configuration/init.js
}
deploy_backup() {
# Create backup and copy it out from docker
# Run this from root folder
docker exec -it cpps_db_1 mongodump --db cpps --out /root/volumes/cpps_db/$(date +"%m-%d-%y")
docker cp cpps_db_1:/root/volumes/cpps_db ./backup/
docker exec -it cpps_db_1 rm -r /root/volumes/cpps_db/$(date +"%m-%d-%y")
}
deploy_restore() {
# Copy the backup file to docker into path /root/volumes/cpps_db/restore/cpps
# docker cp <your_folder> cpps_db_1:/root/volumes/cpps_db/restore
# Then run this command
docker exec cpps_db_1 rm -rf /root/volumes/cpps_db/restore
docker cp ./backup/restore cpps_db_1:/root/volumes/cpps_db/restore
docker exec -it cpps_db_1 mongorestore --db cpps --drop /root/volumes/cpps_db/restore/cpps/
}
deploy_kuejs() {
docker exec -it cpps_app_1 node_modules/kue/bin/kue-dashboard -p 3050 -r redis://cpps_redis_1:6379
}
deploy_redis() {
docker exec -it cpps_redis_1 redis-cli flushall
}
deploy_worker() {
docker exec -it cpps_app_1 /bin/bash -c "cd /root/src && node server/node_modules/queue/worker.js"
}
deploy_stop() {
docker-compose down
docker rmi $(docker images -f "dangling=true" -q)
}
# Call main function
main "$@"