#!/bin/bash set -o errexit set -o nounset set -o pipefail source ${CONTAINER_SCRIPTS_PATH}/common.sh function cleanup() { echo "=> Shutting down MongoDB server ..." pkill -INT mongod || : wait_for_mongo_down exit 0 } trap 'cleanup' SIGINT SIGTERM check_env_vars setup_wiredtiger_cache ${CONTAINER_SCRIPTS_PATH}/mongodb.conf.template # If user provides own config file use it and do not generate new one if [ ! -s $MONGODB_CONFIG_PATH ]; then # Generate config file for MongoDB envsubst < ${CONTAINER_SCRIPTS_PATH}/mongodb.conf.template > $MONGODB_CONFIG_PATH fi mongo_common_args="-f $MONGODB_CONFIG_PATH" setup_default_datadir # Must bring up MongoDB on localhost only until it has an admin password set. mongod $mongo_common_args --bind_ip 127.0.0.1 & wait_for_mongo_up js_command="db.system.users.count({'user':'admin', 'db':'admin'})" if [ "$(mongo admin --quiet --eval "$js_command")" == "1" ]; then echo "=> Admin user is already created. Resetting password ..." mongo_reset_admin else mongo_create_admin fi if [[ -v CREATE_USER ]]; then js_command="db.system.users.count({'user':'${MONGODB_USER}', 'db':'${MONGODB_DATABASE}'})" if [ "$(mongo admin --quiet --eval "$js_command")" == "1" ]; then echo "=> MONGODB_USER user is already created. Resetting password ..." mongo_reset_user else mongo_create_user fi fi # Restart the MongoDB daemon to bind on all interfaces mongod $mongo_common_args --shutdown wait_for_mongo_down # Make sure env variables don't propagate to mongod process. unset MONGODB_USER MONGODB_PASSWORD MONGODB_DATABASE MONGODB_ADMIN_PASSWORD exec mongod $mongo_common_args --auth