#!/bin/bash # Default mode mode="dev" docker="false" # # Run Script for AURA Engine API # # Call with one of these parameters: # # - dev # - prod # - test # - recreate-database # - docker:recreate-database # - docker:build # - docker:push # - docker:dev # if [[ $* =~ ^(dev|api-test-0|api-test-1|api-test-2|prod|test)$ ]]; then mode=$1 fi if [[ "$1" == *"docker:"* ]]; then docker="true" mode=${1#*:} fi echo "[ Run mode=$mode ]" echo "[ Docker=$docker ]" # Check for the correct Python version (3.8+) PYTHON_EXEC="python3" echo "[ Using $("$PYTHON_EXEC" -V) ]" # +++ DEFAULT COMMANDS +++ # if [[ $docker == "false" ]]; then ### Runs the API Server (Development) ### if [[ $mode == "dev" ]]; then source python/bin/activate echo "Running Engine API in Python Environment ($("$PYTHON_EXEC" -V))" echo "Starting API Server" "$PYTHON_EXEC" src/app.py fi ### Runs the API Server (Test) ### if [[ $mode == "api-test-0" ]]; then echo "Starting API Server 0" "$PYTHON_EXEC" src/app.py config=tests/config/engine-0-api.ini fi if [[ $mode == "api-test-1" ]]; then echo "Starting API Server 1" "$PYTHON_EXEC" src/app.py config=tests/config/engine-1-api.ini fi if [[ $mode == "api-test-2" ]]; then echo "Starting API Server 2" "$PYTHON_EXEC" src/app.py config=tests/config/engine-2-api.ini fi ### Runs the API Server using Gunicorn without a system daemon (Production) ### if [[ $mode == "prod" ]]; then echo "Starting API Server" gunicorn -c config/gunicorn.conf.py src.app:app fi if [[ $mode == "test" ]]; then echo "Testing API Server" tox fi ### CAUTION: This deletes everything in your database ### if [[ $mode == "recreate-database" ]]; then "$PYTHON_EXEC" src/app.py --recreate-database fi fi # +++ DOCKER COMMANDS +++ # if [[ $docker == "true" ]]; then BASE_D=$(realpath "${BASH_SOURCE%/*}/") ### Runs Engine API using Gunicorn ### if [[ $mode == "dev" ]]; then exec sudo docker run \ --network="host" \ --name aura-engine-api \ --rm \ -u $UID:$GID \ -v "$BASE_D":/srv \ -v "$BASE_D/config/docker":/srv/config \ --tmpfs /var/log/aura/ \ -e TZ=Europe/Vienna \ autoradio/engine-api 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