diff --git a/.env b/.env index b6619f51819811640e97f99cf6ceaca9d5beae71..9945644ab80fefd125c4b2482c746d85418a2e09 100644 --- a/.env +++ b/.env @@ -1 +1,5 @@ -FLASK_ENV=development \ No newline at end of file +DEVELOPMENT_MODE=True +DATABASE_HOST=localhost +DATABASE_USER=ethan2clay +DATABASE_PASSWORD=Ethan2claY10+$++ +DATABASE_NAME=ethan2clay_prj \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..74a10eacca8208222c1e2c4f38a8ef0610e2aeb4 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,9 @@ +FROM python:3.10-alpine AS builder + +COPY . /flask +WORKDIR ./flask + +RUN pip3 install --no-cache-dir -r requirements.txt + +ENV FLASK_APP=app:create_app +CMD ["flask", "run", "--host=0.0.0.0", "--port=5000"] \ No newline at end of file diff --git a/app/__init__.py b/app/__init__.py index 4b2f4ddc54adcc8634a48e7302e6197a76d62868..e84d0a1978daff634229025902a61d0ece2806e0 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -4,6 +4,8 @@ from flask import Flask from config import Config from flask_sqlalchemy import SQLAlchemy from flask_migrate import Migrate +from dotenv import load_dotenv +import os db = SQLAlchemy() migrate = Migrate() @@ -12,15 +14,19 @@ def create_app(config_class=Config): app = Flask(__name__) app.config.from_object(config_class) - #ONLY TURN ON FOR DEBUGGING - app.config['DEBUG'] = True + #Only enabled when DEVELOPMENT_MODE in .env is set to true + development_mode = os.getenv("DEVELOPMENT_MODE") - # Database connection , TO DO: Encrypt and move into .env fix where connection only works when remoted into database - db_user = 'ethan2clay' - db_password = 'Ethan2claY10+$++' - db_name = 'ethan2clay_prj' + if (development_mode.lower() == 'true'): + app.config['DEBUG'] = True + + load_dotenv() + db_host = os.getenv("DATABASE_HOST") + db_user = os.getenv("DATABASE_USER") + db_password = os.getenv("DATABASE_PASSWORD") + db_name = os.getenv("DATABASE_NAME") - app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{db_user}:{db_password}@localhost/{db_name}".format(db_user=db_user, db_password=db_password, db_name=db_name) + app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{db_user}:{db_password}@{db_host}/{db_name}".format(db_user=db_user, db_password=db_password, db_name=db_name) db.init_app(app) #Run Flask migrations if any available diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 0000000000000000000000000000000000000000..76a915202840c9378123954a64317abf12667fa6 --- /dev/null +++ b/compose.yaml @@ -0,0 +1,33 @@ +services: + flask: + build: + context: . + dockerfile: Dockerfile + stop_signal: SIGINT + ports: + - '5000:5000' + volumes: + - ./app:/app + environment: + - FLASK_APP=app:create_app + - DATABASE_HOST=database + - DATABASE_USER=user + - DATABASE_PASSWORD=userpassword + - DATABASE_NAME=mydatabase + depends_on: + - database + + database: + image: mysql:8.3 + ports: + - '3306:3306' + environment: + MYSQL_ROOT_PASSWORD: rootpassword + MYSQL_DATABASE: mydatabase + MYSQL_USER: user + MYSQL_PASSWORD: userpassword + volumes: + - mysql_data:/var/lib/mysql + +volumes: + mysql_data: \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..b71cdc4018f9978b42a8b673d7addce24d311030 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +Flask>=3.0.0 +flask_sqlalchemy +flask_migrate +pymysql +python-dotenv \ No newline at end of file