Skip to content
Snippets Groups Projects
run.sh 2.58 KiB
Newer Older
  • Learn to ignore specific revisions
  • David Trattnig's avatar
    David Trattnig committed
    #!/bin/bash
    # Default mode
    mode="api-dev"
    docker="false"
    
    #
    # Run Script for AURA Engine API
    #
    # Call with one of these parameters:
    #
    # - api-dev
    # - api
    # - recreate-database
    
    # - docker:recreate-database
    # - docker:build
    # - docker:push
    # - docker:api
    # 
    
    if [[ $* =~ ^(api-dev|api)$ ]]; then 
    	mode=$1 
    fi
    
    if [[ "$1" == *"docker:"* ]]; then
    	docker="true"
    	mode=${1#*:}
    fi
    
    
    echo "[ Run mode=$mode ]"
    echo "[ Docker=$docker ]"
    
    
    
    # +++ DEFAULT COMMANDS +++ #
    
    if [[ $docker == "false" ]]; then
    
    	### Runs the API Server (Development) ###
    
    	if [[ $mode == "api-dev" ]]; then
    		# echo "Building Web Applications"
    		# sh ./script/build-web.sh
    		echo "Starting API Server"
    		/usr/bin/env python3.7 -m src
    	fi
    
    	### Runs the API Server using Gunicorn without a system daemon (Production) ###
    
    	if [[ $mode == "api" ]]; then
    		echo "Activating Python Environment"
    		source ../python-env/bin/activate
    		echo "Starting API Server"
    		gunicorn -c configuration/gunicorn.conf.py src:app
    	fi
    
    	### CAUTION: This deletes everything in your database ###
    
    	if [[ $mode == "recreate-database" ]]; then
    		/usr/bin/env python3.7 -m src --recreate-database
    	fi
    
    fi
    
    
    # +++ DOCKER COMMANDS +++ #
    
    if [[ $docker == "true" ]]; then
    	BASE_D=$(realpath "${BASH_SOURCE%/*}/")
    
    	### Runs Engine API using Gunicorn ###
    
    	# if [[ $mode == "api" ]]; then
    	# 	exec sudo docker run --name engine-api --rm -it \
    	# 		-u $UID:$GID \
    	# 		-p 127.0.0.1:8050:5000 \
    	# 		-v "$BASE_D":/srv \
    	# 		-v "$BASE_D/configuration/":/etc/aura \
    	# 		--tmpfs /var/log/aura/ autoradio/engine-api /srv/src/__main__.py \
    	# 		--device autoradio/engine-api /bin/bash \
    	# 		-c "gunicorn -c configuration/gunicorn.conf.py -m src:app"
    	# fi
    
    	if [[ $mode == "api" ]]; then
    		exec sudo docker run --name engine-api --rm -it \
    			-u $UID:$GID \
    			-p 127.0.0.1:8050:5000 \
    			-v "$BASE_D":/srv \
    			-v "$BASE_D/configuration/":/etc/aura \
    			--tmpfs /var/log/aura/ autoradio/engine-api /srv/src \
    			--device autoradio/engine /bin/bash 
    			# -c "gunicorn -c configuration/gunicorn.conf.py src/__main__.py:app"
    	fi
    
    	### CAUTION: This deletes everything in your database ###
    
    	if [[ $mode == "recreate-database" ]]; then
    		exec sudo docker run --rm -it \
    			-u $UID:$GID \
    			-v "$BASE_D":/srv \
    			-v "$BASE_D/configuration/":/etc/aura \
    			--tmpfs /var/log/aura/ autoradio/engine-api /srv/src --recreate-database
    	fi
    
    	### Create Docker Image from local project ###
    
    	if [[ $mode == "build" ]]; then
    		exec sudo docker build -t autoradio/engine-api .
    	fi
    
    	### Pushes the latest Docker Image to Docker Hub ###
    
    	if [[ $mode == "push" ]]; then
    		exec sudo docker push autoradio/engine-api
    	fi
    fi