diff --git a/cmd/elastic.sh b/cmd/elastic.sh index ad3402ed..af41075a 100644 --- a/cmd/elastic.sh +++ b/cmd/elastic.sh @@ -3,10 +3,25 @@ set -e; function elastic_schema_drop(){ compose_run 'schema' node scripts/drop_index "$@" || true; } function elastic_schema_create(){ compose_run 'schema' ./bin/create_index; } + +# perform pre-start checks and start the elasticsearch container function elastic_start(){ mkdir -p $DATA_DIR/elasticsearch # attemp to set proper permissions if running as root chown $DOCKER_USER $DATA_DIR/elasticsearch 2>/dev/null || true + + # record the owner of the Elasticsearch directory + elasticsearch_owner_uid=$(stat --format '%u' $DATA_DIR/elasticsearch) + + # grab just the first part of the $DOCKER_USER variable which may have format uid:gid (or just uid) + desired_owner_uid=(${DOCKER_USER//:/ }) + + # check permissions, and if $DOCKER_USER cannot read the data dir, quit with error + if [[ "$desired_owner_uid" != "$elasticsearch_owner_uid" ]]; then + echo "user $DOCKER_USER cannot access elasticsearch directory at $DATA_DIR" + echo "please run 'sudo chown $DOCKER_USER $DATA_DIR/elasticsearch'" + exit 1 + fi compose_exec up -d elasticsearch }