1
1
#! /usr/bin/env bash
2
2
3
3
function start_db () {
4
- docker container stop hive-mongo || true && docker container rm -f hive-mongo || true
4
+ docker container list --all | grep hive-mongo > /dev/null \
5
+ && docker container stop hive-mongo > /dev/null \
6
+ && docker container rm -f hive-mongo > /dev/null
7
+ echo -n " Hive-Mongo Container: "
5
8
docker run -d --name hive-mongo \
6
- --network hive \
9
+ --network hive-service \
7
10
-v ${PWD} /.mongodb-data:/data/db \
8
11
-p 27020:27017 \
9
- mongo:4.4.0
12
+ mongo:4.4.0 | cut -c -9
10
13
}
11
14
12
- function start_test_db () {
13
- docker container stop hive-test-mongo || true && docker container rm -f hive-test-mongo || true
14
- docker run -d --name hive-test-mongo \
15
- --network hive \
16
- -v ${PWD} /.mongodb-test-data:/data/db \
17
- -p 27022:27017 \
18
- mongo:4.4.0
15
+ function start_ipfs() {
16
+ docker container list --all | grep hive-ipfs > /dev/null \
17
+ && docker container stop hive-ipfs > /dev/null \
18
+ && docker container rm -f hive-ipfs > /dev/null
19
+ echo -n " Hive-IPFS Container: "
20
+ mkdir -p ${PWD} /.ipfs-data/ipfs-docker-staging ; mkdir -p ${PWD} /.ipfs-data/ipfs-docker-data
21
+ docker run -d --name ipfs-node \
22
+ -v ${PWD} /.ipfs-data/ipfs-docker-staging:/export \
23
+ -v ${PWD} /.ipfs-data/ipfs-docker-data:/data/ipfs \
24
+ -p 8080:8080 -p 4001:4001 -p 127.0.0.1:5001:5001 \
25
+ ipfs/go-ipfs:latest | cut -c -9
26
+ }
27
+
28
+ function start_node() {
29
+ docker container list --all | grep hive-node > /dev/null \
30
+ && docker container stop hive-node > /dev/null \
31
+ && docker container rm -f hive-node > /dev/null
32
+ docker image rm -f elastos/hive-node
33
+ docker build -t elastos/hive-node . > /dev/null
34
+ echo -n " Hive-Node Container: "
35
+ docker run -d --name hive-node \
36
+ --network hive-service \
37
+ -v ${PWD} /.data:/src/data \
38
+ -v ${PWD} /.env:/src/.env \
39
+ -p 5000:5000 \
40
+ elastos/hive-node | cut -c -9
19
41
}
20
42
21
43
function setup_venv () {
@@ -44,42 +66,84 @@ function setup_venv () {
44
66
esac
45
67
}
46
68
47
- function start_docker () {
48
- docker network create hive
49
-
50
- start_db
69
+ function prepare_env_file() {
70
+ if [ -f " .env" ]; then
71
+ return
72
+ fi
73
+
74
+ cp .env.example .env
75
+
76
+ DID_MNEMONIC=$( grep ' DID_MNEMONIC' .env | sed ' s/DID_MNEMONIC="//;s/"//' )
77
+ echo -n " Your DID MNEMONIC: "
78
+ echo -e " \033[;36m ${DID_MNEMONIC} \033[0m"
79
+ echo -n " Confirm ? (y/n) "
80
+ read RESULT
81
+ RESULT=$( echo ${RESULT} )
82
+ if [ ! " ${RESULT} " == " y" ]; then
83
+ echo -n " Please input your DID MNEMONIC: "
84
+ read DID_MNEMONIC
85
+ DID_MNEMONIC=$( echo ${DID_MNEMONIC} )
86
+ [ " ${DID_MNEMONIC} " = " " ] && echo " You don't input DID MNEMONIC" && exit 1
87
+ sed -i " /DID_MNEMONIC/s/^.*$/DID_MNEMONIC=\" ${DID_MNEMONIC} \" /" .env
88
+ fi
89
+
90
+
91
+ echo -n " Please input your DID MNEMONIC PASSPHRASE: "
92
+ read DID_PASSPHRASE
93
+ DID_PASSPHRASE=$( echo ${DID_PASSPHRASE} )
94
+ sed -i " /DID_PASSPHRASE/s/^.*$/DID_PASSPHRASE=${DID_PASSPHRASE} /" .env
95
+ echo -n " Please input your DID MNEMONIC SECRET: "
96
+ read DID_STOREPASS
97
+ DID_STOREPASS=$( echo ${DID_STOREPASS} )
98
+ [ " ${DID_STOREPASS} " != " " ] && sed -i " /DID_STOREPASS/s/^.*$/DID_STOREPASS=${DID_STOREPASS} /" .env
99
+
100
+ sed -i " /DID_RESOLVER/s/^.*$/DID_RESOLVER=http:\/\/api.elastos.io:20606/" .env
101
+ sed -i " /ELA_RESOLVER/s/^.*$/ELA_RESOLVER=http:\/\/api.elastos.io:20336/" .env
102
+ sed -i " /MONGO_HOST/s/^.*$/MONGO_HOST=hive-mongo/" .env
103
+ sed -i " /MONGO_PORT/s/^.*$/MONGO_PORT=27017/" .env
104
+ }
51
105
106
+ function check_docker() {
52
107
echo " Running using docker..."
53
- docker container stop hive-node || true && docker container rm -f hive-node || true
54
- docker build -t elastos/hive-node .
55
- docker run -d --name hive-node \
56
- --network hive \
57
- -v ${PWD} /.data:/src/data \
58
- -v ${PWD} /.env:/src/.env \
59
- -p 5000:5000 \
60
- elastos/hive-node
108
+ docker version > /dev/null 2>&1
109
+ if [ ! $? -eq 0 ]; then
110
+ echo " You don't have docker installed. Please run the below commands to install docker"
111
+ echo "
112
+ $ curl -fsSL https://get.docker.com -o get-docker.sh
113
+ $ sudo sh get-docker.sh
114
+ $ sudo usermod -aG docker $( whoami)
115
+ "
116
+ exit
117
+ fi
61
118
}
62
119
63
- function start_direct () {
64
- docker network create hive
65
-
120
+ function prepare_before_running() {
121
+ check_docker
122
+ prepare_env_file
123
+ docker network ls | grep hive-service > /dev/null || docker network create hive-service
66
124
start_db
125
+ start_ipfs
126
+ }
67
127
68
- echo " Running directly on the machine..."
69
- ps -ef | grep gunicorn | awk ' {print $2}' | xargs kill -9
128
+ function start_docker () {
129
+ echo " Running by docker..."
130
+ prepare_before_running
131
+ start_node
132
+ source wait_node.sh
133
+ }
70
134
135
+ function start_direct () {
136
+ echo " Running directly only..."
137
+ prepare_before_running
71
138
setup_venv
72
-
73
139
LD_LIBRARY_PATH=" $PWD /hive/util/did/" python manage.py runserver
74
140
}
75
141
76
142
function test () {
77
- docker network create hive
78
-
79
- start_db
80
- start_test_db
81
-
143
+ echo " Running directly only..."
144
+ prepare_before_running
82
145
setup_venv
146
+ LD_LIBRARY_PATH=" $PWD /hive/util/did/" python manage.py runserver &
83
147
84
148
rm -rf data
85
149
rm -f hive.log
@@ -103,15 +167,20 @@ function test () {
103
167
pytest --disable-pytest-warnings -xs tests/scripting_test.py
104
168
pytest --disable-pytest-warnings -xs tests/payment_test.py
105
169
pytest --disable-pytest-warnings -xs tests/backup_test.py
106
-
107
- rm -f hive.log
108
- rm -f test_patch.delta
109
-
110
- # docker container stop hive-mongo && docker container rm -f hive-mongo
111
- # docker container stop hive-test-mongo && docker container rm -f hive-test-mongo
112
170
}
113
171
114
- export HIVE_NODE_HOME=" ."
172
+ function stop() {
173
+ hive_node=$( docker container list --all | grep hive-node | awk ' {print $1}' )
174
+ if [ -n " ${hive_node} " ]; then
175
+ docker container stop ${hive_node}
176
+ docker container rm ${hive_node}
177
+ fi
178
+ hive_mongo=$( docker container list --all | grep hive-mongo | awk ' {print $1}' )
179
+ if [ -n " ${hive_mongo} " ]; then
180
+ docker container stop ${hive_mongo}
181
+ docker container rm ${hive_mongo}
182
+ fi
183
+ }
115
184
116
185
case " $1 " in
117
186
direct)
@@ -123,6 +192,9 @@ case "$1" in
123
192
test)
124
193
test
125
194
;;
195
+ stop)
196
+ stop
197
+ ;;
126
198
* )
127
199
echo " Usage: run.sh {docker|direct|test}"
128
200
exit 1
0 commit comments