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