@@ -63,7 +63,31 @@ unset_unused_variables() {
6363 fi
6464}
6565
66- check_initialized_db () {
66+ check_mongodb_uri () {
67+ echo " Check mongodb uri host"
68+ isUriLocal=1
69+ if [[ $APPSMITH_MONGODB_URI == * " localhost" * || $APPSMITH_MONGODB_URI == * " 127.0.0.1" * ]]; then
70+ echo " Use local MongoDB"
71+ isUriLocal=0
72+ fi
73+ }
74+
75+ init_mongodb () {
76+ if [[ $isUriLocal -eq 0 ]]; then
77+ echo " Init database"
78+ MONGO_DB_PATH=" /appsmith-stacks/data/mongodb"
79+ MONGO_LOG_PATH=" $MONGO_DB_PATH /log"
80+ MONGO_DB_KEY=" $MONGO_DB_PATH /key"
81+ mkdir -p " $MONGO_DB_PATH "
82+ touch " $MONGO_LOG_PATH "
83+
84+ if [[ -f " $MONGO_DB_KEY " ]]; then
85+ chmod-mongodb-key " $MONGO_DB_KEY "
86+ fi
87+ fi
88+ }
89+
90+ init_replica_set () {
6791 echo ' Check initialized database'
6892 shouldPerformInitdb=1
6993 for path in \
@@ -73,46 +97,47 @@ check_initialized_db() {
7397 " $MONGO_DB_PATH /storage.bson" ; do
7498 if [ -e " $path " ]; then
7599 shouldPerformInitdb=0
76- return
100+ break
77101 fi
78102 done
79- echo " Should initialize database"
80- }
81-
82- init_mongodb () {
83- echo " Init database"
84- MONGO_DB_PATH=" /appsmith-stacks/data/mongodb"
85- MONGO_LOG_PATH=" $MONGO_DB_PATH /log"
86- MONGO_DB_KEY=" $MONGO_DB_PATH /key"
87- mkdir -p " $MONGO_DB_PATH "
88- touch " $MONGO_LOG_PATH "
89-
90- check_initialized_db
91-
92- if [[ -f " $MONGO_DB_KEY " ]]; then
93- chmod-mongodb-key " $MONGO_DB_KEY "
94- fi
95-
96- if [[ $shouldPerformInitdb -gt 0 ]]; then
103+
104+ if [[ $shouldPerformInitdb -gt 0 && $isUriLocal -eq 0 ]]; then
105+ echo ' Init replica set local'
97106 # Start installed MongoDB service - Dependencies Layer
98107 mongod --fork --port 27017 --dbpath " $MONGO_DB_PATH " --logpath " $MONGO_LOG_PATH "
99108 echo " Waiting 10s for mongodb init"
100109 sleep 10
101- bash " /opt/appsmith/templates/mongo-init.js.sh" " $MONGO_INITDB_ROOT_USERNAME " " $MONGO_INITDB_ROOT_PASSWORD " > " /appsmith-stacks/configuration/mongo-init.js"
102- mongo " 127.0.0.1/${MONGO_INITDB_DATABASE} " /appsmith-stacks/configuration/mongo-init.js
110+ bash " /opt/appsmith/templates/mongo-init.js.sh" " appsmith " " $AUTO_GEN_MONGO_PASSWORD " > " /appsmith-stacks/configuration/mongo-init.js"
111+ mongo " 127.0.0.1/appsmith " /appsmith-stacks/configuration/mongo-init.js
103112 echo " Seeding db done"
104-
105113 echo " Enable replica set"
106114 mongod --dbpath " $MONGO_DB_PATH " --shutdown || true
107115 echo " Fork process"
108- openssl rand -base64 756 > " $MONGO_DB_KEY "
116+ openssl rand -base64 756 > " $MONGO_DB_KEY "
109117 chmod-mongodb-key " $MONGO_DB_KEY "
110118 mongod --fork --port 27017 --dbpath " $MONGO_DB_PATH " --logpath " $MONGO_LOG_PATH " --replSet mr1 --keyFile " $MONGO_DB_KEY " --bind_ip localhost
111119 echo " Waiting 10s for mongodb init with replica set"
112120 sleep 10
113121 mongo " $APPSMITH_MONGODB_URI " --eval ' rs.initiate()'
114122 mongod --dbpath " $MONGO_DB_PATH " --shutdown || true
115123 fi
124+
125+ if [[ $isUriLocal -gt 0 ]]; then
126+ # Check mongodb cloud replica set
127+ echo " Check mongodb cloud replica set"
128+ responseStatus=$( mongo " $APPSMITH_MONGODB_URI " --eval " rs.status()" | grep ok | xargs)
129+ okString=" ok : 1"
130+
131+ if [[ $responseStatus == * $okString * ]]; then
132+ echo " Mongodb cloud replica set is enabled"
133+ mongo " $APPSMITH_MONGODB_URI " --eval ' rs.initiate()'
134+ else
135+ echo -e " \033[0;31m********************************************************************\033[0m"
136+ echo -e " \033[0;31m* Mongodb cloud replica set is not enabled *\033[0m"
137+ echo -e " \033[0;31m********************************************************************\033[0m"
138+ exit 1
139+ fi
140+ fi
116141}
117142
118143chmod-mongodb-key () {
@@ -136,7 +161,7 @@ configure_supervisord() {
136161 cp -f " $SUPERVISORD_CONF_PATH /application_process/" * .conf /etc/supervisor/conf.d
137162
138163 # Disable services based on configuration
139- if [[ " $APPSMITH_MONGODB_URI " = " mongodb://appsmith: $MONGO_INITDB_ROOT_PASSWORD @localhost/appsmith " ]]; then
164+ if [[ $isUriLocal -eq 0 ]]; then
140165 cp " $SUPERVISORD_CONF_PATH /mongodb.conf" /etc/supervisor/conf.d/
141166 fi
142167 if [[ " $APPSMITH_REDIS_URL " = " redis://127.0.0.1:6379" ]]; then
@@ -152,7 +177,9 @@ configure_supervisord() {
152177# Main Section
153178init_env_file
154179unset_unused_variables
180+ check_mongodb_uri
155181init_mongodb
182+ init_replica_set
156183mount_letsencrypt_directory
157184configure_supervisord
158185
0 commit comments