From 6a54b54e5811c58797797561c29bc90c246e71f1 Mon Sep 17 00:00:00 2001
From: James <james39.smith@live.uwe.ac.uk>
Date: Sun, 3 Mar 2024 19:43:05 +0000
Subject: [PATCH]  i think this should be working for postgres finally, There
 is the commented out tailwind line within the dockerfile to get it to work
 for me. had to redeclare django_secret_key and debug status because it wasn't
 finding them in the settings.py file like the sqlite variation was

---
 myproject/.env                  | 30 +++++++----
 myproject/.env.dev              |  5 ++
 myproject/Dockerfile            |  2 +-
 myproject/docker-compose.yml    | 90 ++++++++++++++++++++++++---------
 myproject/entrypoint.sh         |  2 +-
 myproject/myproject/settings.py | 25 ++++++---
 myproject/requirements.txt      |  2 +
 7 files changed, 116 insertions(+), 40 deletions(-)
 create mode 100644 myproject/.env.dev

diff --git a/myproject/.env b/myproject/.env
index 42732e7..aedd4d0 100644
--- a/myproject/.env
+++ b/myproject/.env
@@ -1,10 +1,22 @@
 # Django
-#DJANGO_SECRET_KEY=your_secret_key
-#DEBUG=True
-
-# Database
-DATABASE_NAME=mlaas
-DATABASE_USER=user
-DATABASE_PASSWORD=password
-DATABASE_HOST=db
-DATABASE_PORT=3306
+DJANGO_SECRET_KEY='django-insecure-t%k1f1!c4_9f#x@r_z_k69oz21@0eadh2qb_k3pm3=gknej9f@'
+
+DEBUG=True
+
+# # Database
+# DATABASE_NAME=mlaas
+# DATABASE_USER=user
+# DATABASE_PASSWORD=password
+# DATABASE_HOST=db
+# DATABASE_PORT=3306
+
+
+
+#postgres
+POSTGRES_DB=placeholder
+POSTGRES_NAME=mlaas
+POSTGRES_USER=user
+POSTGRES_PASSWORD=password
+POSTGRES_HOST=db
+POSTGRES_PORT=5432
+
diff --git a/myproject/.env.dev b/myproject/.env.dev
new file mode 100644
index 0000000..ace728f
--- /dev/null
+++ b/myproject/.env.dev
@@ -0,0 +1,5 @@
+POSTGRES_NAME=mlaas
+POSTGRES_USER=user
+POSTGRES_PASSWORD=password
+POSTGRES_HOST=db
+POSTGRES_PORT=5432
\ No newline at end of file
diff --git a/myproject/Dockerfile b/myproject/Dockerfile
index bdd9b66..7a8fc00 100644
--- a/myproject/Dockerfile
+++ b/myproject/Dockerfile
@@ -15,7 +15,7 @@ COPY ./myapp/static ./myapp/static
 COPY tailwind.config.js ./
 
 # Run the Tailwind build process
-RUN npx tailwindcss-cli build myapp/static/src/input.css -o myapp/static/src/output.css
+#RUN npx tailwindcss-cli build myapp/static/src/input.css -o myapp/static/src/output.css
 
 # Use an official Python runtime as the final stage
 FROM python:3.11
diff --git a/myproject/docker-compose.yml b/myproject/docker-compose.yml
index 1c4a7e4..254a076 100644
--- a/myproject/docker-compose.yml
+++ b/myproject/docker-compose.yml
@@ -1,18 +1,62 @@
+# version: '3.8'
+# services:
+#   db:
+#       image: mysql:8.3
+#       volumes:
+#         - mysql_data:/var/lib/mysql
+#         #- ./db_script.sql:/docker-entrypoint-initdb.d/init-db.sql 
+#       restart: unless-stopped
+#       ports:
+#         - "3307:3306"
+#       environment:
+#         MYSQL_ROOT_PASSWORD: root_password
+#         MYSQL_DATABASE: mlaas
+#         MYSQL_USER: user
+#         MYSQL_PASSWORD: password
+#   web:
+#     build: .
+#     command: /bin/sh -c "/entrypoint.sh"
+#     volumes:
+#       - .:/usr/src/app
+#       - static_volume:/usr/src/app/static
+#     depends_on:
+#       - db
+#     environment:
+#       #DJANGO_SECRET_KEY: ${DJANGO_SECRET_KEY}
+#       #DEBUG: ${DEBUG}
+#       DATABASE_NAME: ${DATABASE_NAME}
+#       DATABASE_USER: ${DATABASE_USER}
+#       DATABASE_PASSWORD: ${DATABASE_PASSWORD}
+#       DATABASE_HOST: ${DATABASE_HOST}
+#       DATABASE_PORT: ${DATABASE_PORT}
+#     ports:
+#       - "8000:8000"
+#   tailwind:
+#     image: node:20.11.1-slim
+#     working_dir: /usr/src/app
+#     volumes:
+#       - .:/usr/src/app
+#       - static_volume:/usr/src/app/static
+  
+
+# volumes:
+#   static_volume:
+#   mysql_data:
+
+
 version: '3.8'
 services:
   db:
-      image: mysql:8.3
-      volumes:
-        - mysql_data:/var/lib/mysql
-        #- ./db_script.sql:/docker-entrypoint-initdb.d/init-db.sql 
-      restart: unless-stopped
-      ports:
-        - "3307:3306"
-      environment:
-        MYSQL_ROOT_PASSWORD: root_password
-        MYSQL_DATABASE: mlaas
-        MYSQL_USER: user
-        MYSQL_PASSWORD: password
+    image: postgres:13
+    volumes:
+      - postgres_data:/var/lib/postgresql/data
+    restart: unless-stopped
+    environment:
+      POSTGRES_USER: user
+      POSTGRES_PASSWORD: root_password
+      POSTGRES_DB: mlaas
+    ports:
+      - "5432:5432"
   web:
     build: .
     command: /bin/sh -c "/entrypoint.sh"
@@ -22,25 +66,25 @@ services:
     depends_on:
       - db
     environment:
-      #DJANGO_SECRET_KEY: ${DJANGO_SECRET_KEY}
-      #DEBUG: ${DEBUG}
-      DATABASE_NAME: ${DATABASE_NAME}
-      DATABASE_USER: ${DATABASE_USER}
-      DATABASE_PASSWORD: ${DATABASE_PASSWORD}
-      DATABASE_HOST: ${DATABASE_HOST}
-      DATABASE_PORT: ${DATABASE_PORT}
+      DJANGO_SECRET_KEY: ${DJANGO_SECRET_KEY}
+      DEBUG: ${DEBUG}
+      POSTGRES_NAME: ${POSTGRES_NAME}
+      POSTGRES_USER: ${POSTGRES_USER}
+      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
+      POSTGRES_PORT: ${POSTGRES_PORT}
+      POSTGRES_DB: ${POSTGRES_DB}
     ports:
       - "8000:8000"
+#legacy env file
+    # env_file:
+    # - ./.end.dev
   tailwind:
     image: node:20.11.1-slim
     working_dir: /usr/src/app
     volumes:
       - .:/usr/src/app
       - static_volume:/usr/src/app/static
-  
 
 volumes:
   static_volume:
-  mysql_data:
-
-
+  postgres_data:
diff --git a/myproject/entrypoint.sh b/myproject/entrypoint.sh
index e882418..2087de4 100644
--- a/myproject/entrypoint.sh
+++ b/myproject/entrypoint.sh
@@ -7,4 +7,4 @@ python manage.py makemigrations
 echo "Applying migrations"
 python manage.py migrate
 
-python manage.py runserver 0.0.0.0:8000
\ No newline at end of file
+python manage.py runserver 0.0.0.0:5432
\ No newline at end of file
diff --git a/myproject/myproject/settings.py b/myproject/myproject/settings.py
index 860b534..41a1691 100644
--- a/myproject/myproject/settings.py
+++ b/myproject/myproject/settings.py
@@ -87,18 +87,31 @@ WSGI_APPLICATION = 'myproject.wsgi.application'
 # Database
 # https://docs.djangoproject.com/en/5.0/ref/settings/#databases
 
+# DATABASES = {
+#     'default': {
+#         'ENGINE': 'django.db.backends.mysql',
+#         'NAME': os.environ.get('DATABASE_NAME', 'default_db_name'),
+#         'USER': os.environ.get('DATABASE_USER', 'default_user'),
+#         'PASSWORD': os.environ.get('DATABASE_PASSWORD', 'default_password'),
+#         'HOST': os.environ.get('DATABASE_HOST', 'db'),  # Set to 'db' for Docker
+#         'PORT': os.environ.get('DATABASE_PORT', 3306),
+#     }
+# }
+
+# postgresql connection
 DATABASES = {
     'default': {
-        'ENGINE': 'django.db.backends.mysql',
-        'NAME': os.environ.get('DATABASE_NAME', 'default_db_name'),
-        'USER': os.environ.get('DATABASE_USER', 'default_user'),
-        'PASSWORD': os.environ.get('DATABASE_PASSWORD', 'default_password'),
-        'HOST': os.environ.get('DATABASE_HOST', 'db'),  # Set to 'db' for Docker
-        'PORT': os.environ.get('DATABASE_PORT', 3306),
+        'ENGINE': 'django.db.backends.postgresql',
+        'NAME': os.environ.get('POSTGRES_NAME', 'default_db_name'),
+        'USER': os.environ.get('POSTGRES_USER', 'default_user'),
+        'PASSWORD': os.environ.get('POSTGRES_PASSWORD', 'default_password'),
+        'HOST': os.environ.get('POSTGRES_HOST', 'db'),  # Set to 'db' for Docker
+        'PORT': os.environ.get('POSTGRES_PORT', 5432),
     }
 }
 
 
+
 # Password validation
 # https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators
 
diff --git a/myproject/requirements.txt b/myproject/requirements.txt
index 77795f3..06f4363 100644
--- a/myproject/requirements.txt
+++ b/myproject/requirements.txt
@@ -7,3 +7,5 @@ rcssmin==1.1.1
 rjsmin==1.2.1
 sqlparse==0.4.4
 typing_extensions==4.9.0
+psycopg==3.1.18
+psycopg-binary==3.1.18
\ No newline at end of file
-- 
GitLab