From 2157b6f781a4f207ffb2148c8d164b07c61583f0 Mon Sep 17 00:00:00 2001 From: Ross Date: Mon, 1 Dec 2025 11:12:01 +0000 Subject: [PATCH] some fixes? --- .env.dev | 18 ++++++++++++++++++ docker/.env.dev | 23 ----------------------- docker/docker-compose.dev.yml | 12 ++++++++++++ docker/docker-compose.prod.yml | 6 +++--- rad.code-workspace | 15 +++++++++++++++ rad/Dockerfile.prod | 31 ++++++++++++++++--------------- scripts/local-down.sh | 7 +++++++ scripts/local-up.sh | 22 ++++++++++++++++++++++ 8 files changed, 93 insertions(+), 41 deletions(-) create mode 100644 .env.dev delete mode 100644 docker/.env.dev create mode 100644 docker/docker-compose.dev.yml create mode 100644 rad.code-workspace create mode 100755 scripts/local-down.sh create mode 100755 scripts/local-up.sh diff --git a/.env.dev b/.env.dev new file mode 100644 index 00000000..edb695aa --- /dev/null +++ b/.env.dev @@ -0,0 +1,18 @@ +# Django +DEBUG=1 +SECRET_KEY=w(s0&(_eb058wvmg@44_repv8)r9@5p8fx*g_@c)1dm&d*ew^u +DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1] + +# External DB (you mentioned production uses an external DB) +DATABASE_HOST=db-postgresql-lon1-05515-jan-22-backup-do-user-8165014-0.c.db.ondigitalocean.com +DATABASE_PORT=25060 +DATABASE_NAME=testing +DATABASE_USER=testing +DATABASE_PASSWORD=AVNS_ykXO4RxAq0zeJTI-1Nl + +# Redis +REDIS_URL=redis://redis:6379/0 + +# Gunicorn tuning +GUNICORN_WORKERS=3 +GUNICORN_LOGLEVEL=info diff --git a/docker/.env.dev b/docker/.env.dev deleted file mode 100644 index 73f8fd7f..00000000 --- a/docker/.env.dev +++ /dev/null @@ -1,23 +0,0 @@ -DEBUG=1 -SECRET_KEY=w(s0&(_eb058wvmg@44_repv8)r9@5p8fx*g_@c)1dm&d*ew^u -DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1] - -DB_NAME=rad -DB_HOST=db -DB_USER=django -DB_PASSWORD=postgres -DB_PORT=5432 - -MEMCACHE_HOST=cache - -# DEV-specific vars used by rad/settings_local.py -DEV_USE_POSTGRES=1 -DEV_DB_NAME=${DB_NAME} -DEV_DB_USER=${DB_USER} -DEV_DB_PASSWORD=${DB_PASSWORD} -DEV_DB_HOST=${DB_HOST} -DEV_DB_PORT=${DB_PORT} - -# pgAdmin creds -PGADMIN_DEFAULT_EMAIL=admin@example.com -PGADMIN_DEFAULT_PASSWORD=admin \ No newline at end of file diff --git a/docker/docker-compose.dev.yml b/docker/docker-compose.dev.yml new file mode 100644 index 00000000..90d8cf54 --- /dev/null +++ b/docker/docker-compose.dev.yml @@ -0,0 +1,12 @@ +# Development override: point the web service to rad/.env.dev and map nginx to +# non-privileged host ports so you can run without sudo. + +services: + web: + env_file: + - ../.env.dev + + nginx: + ports: + - "8080:80" + - "8443:443" diff --git a/docker/docker-compose.prod.yml b/docker/docker-compose.prod.yml index d715c98d..1dadf42c 100644 --- a/docker/docker-compose.prod.yml +++ b/docker/docker-compose.prod.yml @@ -1,5 +1,3 @@ -version: "3.8" - services: redis: image: redis:7.4.2-alpine @@ -18,8 +16,10 @@ services: context: .. dockerfile: rad/Dockerfile.prod restart: always + # Use COMPOSE_ENV to select which env file to load (defaults to 'prod'). + # Example: COMPOSE_ENV=dev docker compose -f rad/docker/docker-compose.prod.yml -f rad/docker/docker-compose.dev.yml up -d env_file: - - ../.env.prod + - ../.env.${COMPOSE_ENV:-prod} environment: - DJANGO_SETTINGS_MODULE=rad.settings.production depends_on: diff --git a/rad.code-workspace b/rad.code-workspace new file mode 100644 index 00000000..24a0bd0b --- /dev/null +++ b/rad.code-workspace @@ -0,0 +1,15 @@ +{ + "folders": [ + { + "name": "rad", + "path": "." + } + ], + "settings": { + "python.testing.pytestArgs": [ + "." + ], + "python.testing.unittestEnabled": false, + "python.testing.pytestEnabled": true + } +} \ No newline at end of file diff --git a/rad/Dockerfile.prod b/rad/Dockerfile.prod index 1630c1ba..bd08e295 100644 --- a/rad/Dockerfile.prod +++ b/rad/Dockerfile.prod @@ -8,21 +8,22 @@ ENV PYTHONUNBUFFERED=1 # Install build deps required for common Python packages and netcat for health wait RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - build-essential \ - gcc \ - git \ - libpq-dev \ - pkg-config \ - libcairo2-dev \ - libgdk-pixbuf2.0-0 \ - libgdk-pixbuf2.0-dev \ - libjpeg-dev \ - zlib1g-dev \ - wget \ - ca-certificates \ - netcat \ - && rm -rf /var/lib/apt/lists/* + && apt-get install -y --no-install-recommends \ + build-essential \ + gcc \ + git \ + libpq-dev \ + pkg-config \ + libcairo2-dev \ + # some distributions provide libgdk-pixbuf under the xlib name + libgdk-pixbuf-xlib-2.0-0 \ + libgdk-pixbuf-xlib-2.0-dev \ + libjpeg-dev \ + zlib1g-dev \ + wget \ + ca-certificates \ + netcat-openbsd \ + && rm -rf /var/lib/apt/lists/* WORKDIR /usr/src/app diff --git a/scripts/local-down.sh b/scripts/local-down.sh new file mode 100755 index 00000000..c29fb5f8 --- /dev/null +++ b/scripts/local-down.sh @@ -0,0 +1,7 @@ +#!/bin/sh +set -e + +REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)" +cd "$REPO_ROOT" + +docker compose -f docker/docker-compose.prod.yml -f docker/docker-compose.test.yml -f docker/docker-compose.dev.yml down --volumes --remove-orphans diff --git a/scripts/local-up.sh b/scripts/local-up.sh new file mode 100755 index 00000000..d471fde0 --- /dev/null +++ b/scripts/local-up.sh @@ -0,0 +1,22 @@ +#!/bin/sh +set -e + +# Simple local bring-up helper. Usage: +# ./rad/scripts/local-up.sh +# It requires rad/.env.dev to exist (do NOT auto-create from examples) and then +# runs the prod+dev compose stack using COMPOSE_ENV to select the env file. + +REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)" +cd "$REPO_ROOT" + +if [ ! -f .env.dev ]; then + echo ".env.dev not found. Create .env.dev with your development values (pointing to the external dev DB) and re-run." + echo "You can copy .env.prod.example to start from a template, but DO NOT commit secrets." + exit 1 +fi + +# Default to 'dev' but allow overriding with COMPOSE_ENV environment variable +COMPOSE_ENV=${COMPOSE_ENV:-dev} + +echo "Starting compose with COMPOSE_ENV=$COMPOSE_ENV (using .env.$COMPOSE_ENV)" +COMPOSE_ENV=$COMPOSE_ENV docker compose -f docker/docker-compose.prod.yml -f docker/docker-compose.dev.yml up -d --build