Refactor entrypoint script to support migrate slim to fat container (#11519)

This commit is contained in:
geekup-legodevops 2022-03-03 10:10:29 +07:00 committed by GitHub
parent 762357e97c
commit db7a046116
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 29 deletions

View File

@ -11,24 +11,26 @@ init_env_file() {
# Generate new docker.env file when initializing container for first time or in Heroku which does not have persistent volume # Generate new docker.env file when initializing container for first time or in Heroku which does not have persistent volume
echo "Generating default configuration file" echo "Generating default configuration file"
mkdir -p "$CONF_PATH" mkdir -p "$CONF_PATH"
AUTO_GEN_MONGO_PASSWORD=$( APPSMITH_MONGODB_USER="appsmith"
APPSMITH_MONGODB_PASSWORD=$(
tr -dc A-Za-z0-9 </dev/urandom | head -c 13 tr -dc A-Za-z0-9 </dev/urandom | head -c 13
echo '' echo ""
) )
AUTO_GEN_ENCRYPTION_PASSWORD=$( APPSMITH_ENCRYPTION_PASSWORD=$(
tr -dc A-Za-z0-9 </dev/urandom | head -c 13 tr -dc A-Za-z0-9 </dev/urandom | head -c 13
echo '' echo ""
) )
AUTO_GEN_ENCRYPTION_SALT=$( APPSMITH_ENCRYPTION_SALT=$(
tr -dc A-Za-z0-9 </dev/urandom | head -c 13 tr -dc A-Za-z0-9 </dev/urandom | head -c 13
echo '' echo ""
) )
bash "$TEMPLATES_PATH/docker.env.sh" "$AUTO_GEN_MONGO_PASSWORD" "$AUTO_GEN_ENCRYPTION_PASSWORD" "$AUTO_GEN_ENCRYPTION_SALT" > "$ENV_PATH" bash "$TEMPLATES_PATH/docker.env.sh" "$APPSMITH_MONGODB_USER" "$APPSMITH_MONGODB_PASSWORD" "$APPSMITH_ENCRYPTION_PASSWORD" "$APPSMITH_ENCRYPTION_SALT" > "$ENV_PATH"
fi fi
printenv | grep -E '^APPSMITH_|^MONGO_' > "$TEMPLATES_PATH/pre-define.env" printenv | grep -E '^APPSMITH_|^MONGO_' > "$TEMPLATES_PATH/pre-define.env"
echo 'Load environment configuration'
echo "Load environment configuration"
set -o allexport set -o allexport
. "$ENV_PATH" . "$ENV_PATH"
. "$TEMPLATES_PATH/pre-define.env" . "$TEMPLATES_PATH/pre-define.env"
@ -37,7 +39,7 @@ init_env_file() {
unset_unused_variables() { unset_unused_variables() {
# Check for enviroment vairalbes # Check for enviroment vairalbes
echo 'Checking environment configuration' echo "Checking environment configuration"
if [[ -z "${APPSMITH_MAIL_ENABLED}" ]]; then if [[ -z "${APPSMITH_MAIL_ENABLED}" ]]; then
unset APPSMITH_MAIL_ENABLED # If this field is empty is might cause application crash unset APPSMITH_MAIL_ENABLED # If this field is empty is might cause application crash
fi fi
@ -64,17 +66,17 @@ unset_unused_variables() {
} }
check_mongodb_uri() { check_mongodb_uri() {
echo "Check mongodb uri host" echo "Checking APPSMITH_MONGODB_URI"
isUriLocal=1 isUriLocal=1
if [[ $APPSMITH_MONGODB_URI == *"localhost"* || $APPSMITH_MONGODB_URI == *"127.0.0.1"* ]]; then if [[ $APPSMITH_MONGODB_URI == *"localhost"* || $APPSMITH_MONGODB_URI == *"127.0.0.1"* ]]; then
echo "Use local MongoDB" echo "Detected local MongoDB"
isUriLocal=0 isUriLocal=0
fi fi
} }
init_mongodb() { init_mongodb() {
if [[ $isUriLocal -eq 0 ]]; then if [[ $isUriLocal -eq 0 ]]; then
echo "Init database" echo "Initializing local database"
MONGO_DB_PATH="/appsmith-stacks/data/mongodb" MONGO_DB_PATH="/appsmith-stacks/data/mongodb"
MONGO_LOG_PATH="$MONGO_DB_PATH/log" MONGO_LOG_PATH="$MONGO_DB_PATH/log"
MONGO_DB_KEY="$MONGO_DB_PATH/key" MONGO_DB_KEY="$MONGO_DB_PATH/key"
@ -88,7 +90,7 @@ init_mongodb() {
} }
init_replica_set() { init_replica_set() {
echo 'Check initialized database' echo "Checking initialized database"
shouldPerformInitdb=1 shouldPerformInitdb=1
for path in \ for path in \
"$MONGO_DB_PATH/WiredTiger" \ "$MONGO_DB_PATH/WiredTiger" \
@ -102,38 +104,37 @@ init_replica_set() {
done done
if [[ $shouldPerformInitdb -gt 0 && $isUriLocal -eq 0 ]]; then if [[ $shouldPerformInitdb -gt 0 && $isUriLocal -eq 0 ]]; then
echo 'Init replica set local' echo "Initializing Replica Set for local database"
# Start installed MongoDB service - Dependencies Layer # Start installed MongoDB service - Dependencies Layer
mongod --fork --port 27017 --dbpath "$MONGO_DB_PATH" --logpath "$MONGO_LOG_PATH" mongod --fork --port 27017 --dbpath "$MONGO_DB_PATH" --logpath "$MONGO_LOG_PATH"
echo "Waiting 10s for mongodb init" echo "Waiting 10s for MongoDB to start"
sleep 10 sleep 10
bash "/opt/appsmith/templates/mongo-init.js.sh" "appsmith" "$AUTO_GEN_MONGO_PASSWORD" > "/appsmith-stacks/configuration/mongo-init.js" echo "Creating MongoDB user"
bash "/opt/appsmith/templates/mongo-init.js.sh" "$APPSMITH_MONGODB_USER" "$APPSMITH_MONGODB_PASSWORD" > "/appsmith-stacks/configuration/mongo-init.js"
mongo "127.0.0.1/appsmith" /appsmith-stacks/configuration/mongo-init.js mongo "127.0.0.1/appsmith" /appsmith-stacks/configuration/mongo-init.js
echo "Seeding db done" echo "Enabling Replica Set"
echo "Enable replica set"
mongod --dbpath "$MONGO_DB_PATH" --shutdown || true mongod --dbpath "$MONGO_DB_PATH" --shutdown || true
echo "Fork process"
openssl rand -base64 756 > "$MONGO_DB_KEY" openssl rand -base64 756 > "$MONGO_DB_KEY"
chmod-mongodb-key "$MONGO_DB_KEY" chmod-mongodb-key "$MONGO_DB_KEY"
mongod --fork --port 27017 --dbpath "$MONGO_DB_PATH" --logpath "$MONGO_LOG_PATH" --replSet mr1 --keyFile "$MONGO_DB_KEY" --bind_ip localhost mongod --fork --port 27017 --dbpath "$MONGO_DB_PATH" --logpath "$MONGO_LOG_PATH" --replSet mr1 --keyFile "$MONGO_DB_KEY" --bind_ip localhost
echo "Waiting 10s for mongodb init with replica set" echo "Waiting 10s for MongoDB to start with Replica Set"
sleep 10 sleep 10
mongo "$APPSMITH_MONGODB_URI" --eval 'rs.initiate()' mongo "$APPSMITH_MONGODB_URI" --eval 'rs.initiate()'
mongod --dbpath "$MONGO_DB_PATH" --shutdown || true mongod --dbpath "$MONGO_DB_PATH" --shutdown || true
fi fi
if [[ $isUriLocal -gt 0 ]]; then if [[ $isUriLocal -gt 0 ]]; then
# Check mongodb cloud replica set # Check mongodb cloud Replica Set
echo "Check mongodb cloud replica set" echo "Checking Replica Set of external MongoDB"
responseStatus=$(mongo "$APPSMITH_MONGODB_URI" --eval "rs.status()" | grep ok | xargs) responseStatus=$(mongo "$APPSMITH_MONGODB_URI" --eval "rs.status()" | grep ok | xargs)
okString="ok : 1" okString="ok : 1"
if [[ $responseStatus == *$okString* ]]; then if [[ $responseStatus == *$okString* ]]; then
echo "Mongodb cloud replica set is enabled" echo "Mongodb cloud Replica Set is enabled"
mongo "$APPSMITH_MONGODB_URI" --eval 'rs.initiate()' mongo "$APPSMITH_MONGODB_URI" --eval 'rs.initiate()'
else else
echo -e "\033[0;31m********************************************************************\033[0m" echo -e "\033[0;31m********************************************************************\033[0m"
echo -e "\033[0;31m* Mongodb cloud replica set is not enabled *\033[0m" echo -e "\033[0;31m* MongoDB Replica Set is not enabled *\033[0m"
echo -e "\033[0;31m********************************************************************\033[0m" echo -e "\033[0;31m********************************************************************\033[0m"
exit 1 exit 1
fi fi

View File

@ -1,9 +1,10 @@
#!/bin/bash #!/bin/bash
set -o nounset set -o nounset
MONGO_PASSWORD="$1" MONGO_USER="$1"
ENCRYPTION_PASSWORD="$2" MONGO_PASSWORD="$2"
ENCRYPTION_SALT="$3" ENCRYPTION_PASSWORD="$3"
ENCRYPTION_SALT="$4"
cat <<EOF cat <<EOF
# Sentry # Sentry
@ -68,7 +69,9 @@ APPSMITH_RECAPTCHA_SITE_KEY=
APPSMITH_RECAPTCHA_SECRET_KEY= APPSMITH_RECAPTCHA_SECRET_KEY=
APPSMITH_RECAPTCHA_ENABLED= APPSMITH_RECAPTCHA_ENABLED=
APPSMITH_MONGODB_URI=mongodb://appsmith:$MONGO_PASSWORD@localhost:27017/appsmith APPSMITH_MONGODB_URI=mongodb://$MONGO_USER:$MONGO_PASSWORD@localhost:27017/appsmith
APPSMITH_MONGODB_USER=$MONGO_USER
APPSMITH_MONGODB_PASSWORD=$MONGO_PASSWORD
APPSMITH_API_BASE_URL=http://localhost:8080/api/v1 APPSMITH_API_BASE_URL=http://localhost:8080/api/v1
APPSMITH_REDIS_URL=redis://127.0.0.1:6379 APPSMITH_REDIS_URL=redis://127.0.0.1:6379