diff --git a/app/Dockerfile b/app/Dockerfile index 1e6d6d2..37d4626 100644 --- a/app/Dockerfile +++ b/app/Dockerfile @@ -1,6 +1,8 @@ FROM python:3.12-slim +ARG APP_VERSION=unknown ENV PYTHONDONTWRITEBYTECODE=1 \ - PYTHONUNBUFFERED=1 + PYTHONUNBUFFERED=1 \ + APP_VERSION=$APP_VERSION RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential libpq-dev postgresql-client \ diff --git a/app/core/context_processors.py b/app/core/context_processors.py index 189d6bd..9fb63cc 100644 --- a/app/core/context_processors.py +++ b/app/core/context_processors.py @@ -1,3 +1,4 @@ +import os from pathlib import Path _VERSION = None @@ -6,9 +7,20 @@ _VERSION = None def app_version(request): global _VERSION if _VERSION is None: - version_file = Path(__file__).resolve().parent.parent.parent / "VERSION" - try: - _VERSION = version_file.read_text().strip() - except FileNotFoundError: - _VERSION = "unknown" + # 1. Environment variable (set in Docker/deployment) + _VERSION = os.environ.get("APP_VERSION", "").strip() + if not _VERSION: + # 2. Try VERSION file at common locations + base = Path(__file__).resolve().parent.parent # app/ + for candidate in [ + base.parent / "VERSION", # repo root (local dev) + base / "VERSION", # app/ dir (Docker) + ]: + try: + _VERSION = candidate.read_text().strip() + break + except FileNotFoundError: + continue + else: + _VERSION = "unknown" return {"APP_VERSION": _VERSION} diff --git a/compose.yml b/compose.yml index f64c8c6..4d74933 100644 --- a/compose.yml +++ b/compose.yml @@ -25,7 +25,10 @@ services: image: redis:7-alpine web: - build: ./app + build: + context: ./app + args: + APP_VERSION: ${APP_VERSION:-unknown} depends_on: db: condition: service_healthy @@ -62,7 +65,10 @@ services: command: ["gunicorn", "core.wsgi:application", "--bind", "0.0.0.0:8000", "--workers", "3"] worker: - build: ./app + build: + context: ./app + args: + APP_VERSION: ${APP_VERSION:-unknown} environment: - POSTGRES_DB=${POSTGRES_DB} - POSTGRES_USER=${POSTGRES_USER} @@ -88,7 +94,10 @@ services: command: ["celery", "-A", "core", "worker", "-l", "info"] beat: - build: ./app + build: + context: ./app + args: + APP_VERSION: ${APP_VERSION:-unknown} environment: - POSTGRES_DB=${POSTGRES_DB} - POSTGRES_USER=${POSTGRES_USER} @@ -114,7 +123,10 @@ services: command: ["celery", "-A", "core", "beat", "-l", "info"] mcp: - build: ./app + build: + context: ./app + args: + APP_VERSION: ${APP_VERSION:-unknown} depends_on: db: condition: service_healthy