summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Lemon <y@yulqen.org>2024-06-03 14:52:24 +0100
committerMatthew Lemon <y@yulqen.org>2024-06-03 14:52:24 +0100
commit8ddbd7f62e8a00f06e73e8ebb166221dec5d263e (patch)
tree5ccece60ab2208d63518757f3831f7d5f35eac0a
parent0c88ccbb77bc8d16015a8d96c5782d00d573e3f6 (diff)
Revised Dockerfile to use slim and prod config for postgres
Diffstat (limited to '')
-rw-r--r--Dockerfile29
-rw-r--r--conf/settings/prod.py25
2 files changed, 33 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..2633982
--- /dev/null
+++ b/conf/settings/prod.py
@@ -0,0 +1,25 @@
+from .base import *
+
+# Database
+# https://docs.djangoproject.com/en/4.0/ref/settings/#databases
+
+# 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, 'dbname')).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()
+
+# 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,
+ }
+}
+