summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYulqen <246857+yulqen@users.noreply.github.com>2024-06-03 15:04:46 +0100
committerGitHub <noreply@github.com>2024-06-03 15:04:46 +0100
commitbfa7ea4cb41692618621d9ac15e24955f56f1a11 (patch)
tree4f7a79ebfbd9084c0d58b60f63afca5db867cb58
parent0c88ccbb77bc8d16015a8d96c5782d00d573e3f6 (diff)
parent19fb1fe5756cd11eb00704162405d6a8399eb9af (diff)
Merge pull request #57 from defencedigital/postgres-migration
Postgres migration
-rw-r--r--Dockerfile29
-rw-r--r--conf/settings/prod.py35
2 files changed, 43 insertions, 21 deletions
diff --git a/Dockerfile b/Dockerfile
index 53550fd..b4e9f59 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,39 +1,26 @@
-# Builder stage
-FROM registry.access.redhat.com/ubi9/python-311:1-52.1712567218 AS builder
+FROM python:3-slim
# Add application sources
USER 0
-COPY . /app
-RUN mkdir -p /app/static/css /app/static/js /app/static/img
-RUN chown -R 1001:0 /app
-USER 1001
+
+RUN apt update && apt install -y --no-install-recommends libpq-dev build-essential
WORKDIR /app
-ENV DJANGO_SETTINGS_MODULE=conf.settings.base
+COPY . /app
+
+ENV DJANGO_SETTINGS_MODULE=conf.settings.prod
# Install dependencies
RUN pip install -U "pip>=24.0.0" && \
pip install -r requirements.txt && \
python manage.py collectstatic --noinput
-# Final stage
-FROM python:3.12
-
-# Set working directory
-WORKDIR /app
-
-# Copy from builder
-COPY --from=builder /app /app
-
-RUN apt update && apt install -y --no-install-recommends libpq-dev build-essential
+RUN mkdir -p /app/static/css /app/static/js /app/static/img
-# Install packages
-RUN pip install -r requirements.txt
-ENV DJANGO_SETTINGS_MODULE=conf.settings.local
-EXPOSE 8000
+USER 1001
# Start app
CMD ["gunicorn", "ded.wsgi:application", "--bind", "0.0.0.0:8000"]
diff --git a/conf/settings/prod.py b/conf/settings/prod.py
new file mode 100644
index 0000000..f44152a
--- /dev/null
+++ b/conf/settings/prod.py
@@ -0,0 +1,35 @@
+from .base import *
+import os
+
+# Database
+# https://docs.djangoproject.com/en/4.0/ref/settings/#databases
+
+# Check if running in OpenShift cluster
+if os.path.exists('/etc/secret-volume'):
+ # Read database credentials from mounted Secret volume
+ secret_volume_path = '/etc/secret-volume'
+ db_host = open(os.path.join(secret_volume_path, 'host')).read().strip()
+ db_port = open(os.path.join(secret_volume_path, 'port')).read().strip()
+ db_name = open(os.path.join(secret_volume_path, 'database')).read().strip()
+ db_user = open(os.path.join(secret_volume_path, 'user')).read().strip()
+ db_password = open(os.path.join(secret_volume_path, 'password')).read().strip()
+else:
+ # Use environment variables for local development
+ db_host = os.environ.get('DB_HOST', 'localhost')
+ db_port = os.environ.get('DB_PORT', '5432')
+ db_name = os.environ.get('DB_NAME', 'your_local_db_name')
+ db_user = os.environ.get('DB_USER', 'your_local_db_user')
+ db_password = os.environ.get('DB_PASSWORD', 'your_local_db_password')
+
+# Configure Django database settings
+DATABASES = {
+ 'default': {
+ 'ENGINE': 'django.db.backends.postgresql',
+ 'NAME': db_name,
+ 'USER': db_user,
+ 'PASSWORD': db_password,
+ 'HOST': db_host,
+ 'PORT': db_port,
+ }
+}
+