diff --git a/Dockerfile b/Dockerfile index be8870e..16cc8c1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,6 +12,7 @@ LABEL maintainer="parker " WORKDIR / COPY . . +RUN chmod +x linklogger.sh RUN pip install -r requirements.txt RUN apt-get update && apt-get install -y nginx && \ @@ -22,4 +23,4 @@ COPY --from=build-ui /app/dist /usr/share/nginx/html # Replace the default site with the LinkLogger config COPY nginx.conf /etc/nginx/sites-enabled/default -CMD service nginx start && python -u linklogger.py \ No newline at end of file +CMD ["./linklogger.sh"] \ No newline at end of file diff --git a/config.py b/config.py index 620b301..9b6f23c 100644 --- a/config.py +++ b/config.py @@ -1,7 +1,6 @@ import jsonschema import os import yaml -import sys import logging from colorlog import ColoredFormatter @@ -66,7 +65,9 @@ config: "`config.yaml` was not found, a template has been created." " Please fill out the necessary information and restart." ) - sys.exit() + return False + + return True # Validate the options within config.yaml @@ -78,7 +79,7 @@ def validate_config(file_contents): jsonschema.validate(config, schema) except jsonschema.ValidationError as e: LOG.error(e.message) - sys.exit() + return False # Make IP_TO_LOCATION a boolean IP_TO_LOCATION = bool(config["config"]["ip_to_location"]) diff --git a/dev.sh b/dev.sh new file mode 100755 index 0000000..e9d2d0b --- /dev/null +++ b/dev.sh @@ -0,0 +1,20 @@ +#! /bin/bash +# If on Linux or MacOS - check tmux +if [[ "$OSTYPE" == "linux-gnu"* ]] || [[ "$OSTYPE" == "darwin"* ]]; then + python3 linklogger.py & + cd app || return + yarn dev +fi + +# If on Windows +if [[ "$OSTYPE" == "msys" ]]; then + python3 linklogger.py & + cd app || return + yarn dev + # echo -e "This script is not supported on Windows. Please run the API and UI manually." + # echo -e "\t1. Install node.js, yarn, python3, and pip" + # echo -e "\t2. Run 'pip install -r requirements.txt' in the root directory" + # echo -e "\t3. Run 'python3 linklogger.py' in the root directory" + # echo -e "\t4. Run 'cd app' and then 'yarn dev'" + # exit 1 +fi \ No newline at end of file diff --git a/linklogger.py b/linklogger.py index 7222d3a..c456a16 100644 --- a/linklogger.py +++ b/linklogger.py @@ -8,5 +8,5 @@ from database import Base, engine Base.metadata.create_all(bind=engine) if __name__ == "__main__": - config.load_config() - uvicorn.run(app, port=5252) + if config.load_config(): + uvicorn.run(app, port=5252) diff --git a/linklogger.sh b/linklogger.sh new file mode 100644 index 0000000..a2a0f44 --- /dev/null +++ b/linklogger.sh @@ -0,0 +1,6 @@ +#!/bin/bash +# Start nginx in the background +service nginx start + +# Run the Python script +python -u linklogger.py \ No newline at end of file