Skip to content

Commit 2d8e7fe

Browse files
Enable replicaset on local MongoDB only (appsmithorg#10010)
1 parent fab552c commit 2d8e7fe

2 files changed

Lines changed: 54 additions & 31 deletions

File tree

deploy/docker/entrypoint.sh

Lines changed: 52 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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

118143
chmod-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
153178
init_env_file
154179
unset_unused_variables
180+
check_mongodb_uri
155181
init_mongodb
182+
init_replica_set
156183
mount_letsencrypt_directory
157184
configure_supervisord
158185

deploy/docker/templates/docker.env.sh

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,8 @@ APPSMITH_RECAPTCHA_SITE_KEY=
6767
APPSMITH_RECAPTCHA_SECRET_KEY=
6868
APPSMITH_RECAPTCHA_ENABLED=
6969
70-
MONGO_INITDB_ROOT_USERNAME=appsmith
71-
MONGO_INITDB_ROOT_PASSWORD=$MONGO_PASSWORD
72-
MONGO_INITDB_DATABASE=appsmith
73-
APPSMITH_MONGO_HOST=localhost:27017
74-
APPSMITH_MONGODB_URI=mongodb://appsmith:$MONGO_PASSWORD@localhost/appsmith
75-
APPSMITH_API_BASE_URL=http://localhost:8080
70+
APPSMITH_MONGODB_URI=mongodb://appsmith:$MONGO_PASSWORD@localhost:27017/appsmith
71+
APPSMITH_API_BASE_URL=http://localhost:8080/api/v1
7672
7773
APPSMITH_REDIS_URL=redis://127.0.0.1:6379
7874

0 commit comments

Comments
 (0)