diff options
author | Matthew Lemon <y@yulqen.org> | 2024-06-03 14:52:24 +0100 |
---|---|---|
committer | Matthew Lemon <y@yulqen.org> | 2024-06-03 14:52:24 +0100 |
commit | 8ddbd7f62e8a00f06e73e8ebb166221dec5d263e (patch) | |
tree | 5ccece60ab2208d63518757f3831f7d5f35eac0a | |
parent | 0c88ccbb77bc8d16015a8d96c5782d00d573e3f6 (diff) |
Revised Dockerfile to use slim and prod config for postgres
-rw-r--r-- | Dockerfile | 29 | ||||
-rw-r--r-- | conf/settings/prod.py | 25 |
2 files changed, 33 insertions, 21 deletions
@@ -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, + } +} + |