From ca5cb9e77709a6f613fa70fc320fc255594725c2 Mon Sep 17 00:00:00 2001 From: Stijnvandenbroek Date: Thu, 5 Mar 2026 10:38:09 +0000 Subject: [PATCH] fix: working elementary setup --- Dockerfile | 3 +++ data_platform/ops/elementary.py | 6 +++++- dbt/profiles.yml | 13 +++++++++++++ nginx/elementary.conf | 7 +++++-- 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 28d5d9e..12b0d28 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,6 +5,9 @@ WORKDIR /app COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv +# Install system dependencies (git is required by elementary/dbt deps) +RUN apt-get update && apt-get install -y --no-install-recommends git && rm -rf /var/lib/apt/lists/* + # Install dependencies before copying full source (layer caching) COPY pyproject.toml uv.lock* ./ RUN uv sync --frozen --no-dev 2>/dev/null || uv sync --no-dev diff --git a/data_platform/ops/elementary.py b/data_platform/ops/elementary.py index c2d845f..0bd8a8e 100644 --- a/data_platform/ops/elementary.py +++ b/data_platform/ops/elementary.py @@ -57,6 +57,9 @@ def elementary_run_models(context: OpExecutionContext) -> None: raise Exception(f"dbt run elementary failed with exit code {result.returncode}") +_EDR_REPORT_PATH = _DBT_DIR / "edr_target" / "elementary_report.html" + + @op(ins={"after": In(Nothing)}) def elementary_generate_report(context: OpExecutionContext) -> None: """Run edr report to regenerate the Elementary HTML report.""" @@ -67,7 +70,8 @@ def elementary_generate_report(context: OpExecutionContext) -> None: str(_DBT_DIR), "--project-dir", str(_DBT_DIR), - "--disable-open-browser", + "--file-path", + str(_EDR_REPORT_PATH), ] context.log.info(f"Running: {' '.join(cmd)}") result = subprocess.run(cmd, capture_output=True, text=True) diff --git a/dbt/profiles.yml b/dbt/profiles.yml index e3d658c..75f2ed2 100644 --- a/dbt/profiles.yml +++ b/dbt/profiles.yml @@ -10,3 +10,16 @@ data_platform: dbname: "{{ env_var('POSTGRES_DB') }}" schema: public threads: 4 + +elementary: + target: "{{ env_var('DBT_TARGET', 'dev') }}" + outputs: + dev: + type: postgres + host: "{{ env_var('POSTGRES_HOST', 'localhost') }}" + port: "{{ env_var('POSTGRES_PORT', '5432') | int }}" + user: "{{ env_var('POSTGRES_USER') }}" + password: "{{ env_var('POSTGRES_PASSWORD') }}" + dbname: "{{ env_var('POSTGRES_DB') }}" + schema: elementary + threads: 4 diff --git a/nginx/elementary.conf b/nginx/elementary.conf index bbcaa43..d9257f5 100644 --- a/nginx/elementary.conf +++ b/nginx/elementary.conf @@ -3,9 +3,12 @@ server { server_name _; root /usr/share/nginx/html; - index elementary_report.html; + + location = / { + return 302 /elementary_report.html; + } location / { - try_files $uri $uri/ /elementary_report.html; + try_files $uri =404; } }