Sign inSign up

ilum/marquez-web

By ilum

Updated 4 months ago

ILUM Marquez Web: data lineage visualization UI (React, OpenLineage)

Image
Web servers
Monitoring & observability
0

5.6K

ilum/marquez-web repository overview

Ilum Marquez Web

Web UI for exploring data lineage, job runs, and dataset metadata — built on React 18 and Material-UI.

Base Image Architectures


Overview

ilum/marquez-web is the web-based user interface for Marquez, providing interactive visualization of data lineage, job dependencies, and dataset metadata. Built with React 18 and Material-UI, it enables data teams to explore and understand their data ecosystem.

  • Lineage Graph — interactive visualization of dataset/job dependencies
  • Job Explorer — browse namespaces, jobs, and run history
  • Dataset Catalog — explore datasets with schema and metadata
  • Run Details — view execution history, logs, and OpenLineage facets
  • Internationalization — multi-language support (i18n)

Note: Ilum maintains this image for community use. Internally, Ilum uses a separate UI (planned for open-source release) optimized for large-scale lineage exploration.


TL;DR / Quick Start

# Run Marquez Web (connects to Marquez API)
docker run -d \
  --name marquez-web \
  -p 3000:3000 \
  -e MARQUEZ_HOST=marquez \
  -e MARQUEZ_PORT=5000 \
  ilum/marquez-web:0.53.0

Access the UI at http://localhost:3000.

Note: Requires a running ilum/marquez backend. For Kubernetes, use the Ilum Marquez Helm Chart.


Supported Tags

  • 0.53.0, latest — React 18.2 + MUI 5 + Node 24 Alpine

Environment Variables

API Connection (Required)
VariableDefaultDescription
MARQUEZ_HOSTlocalhostMarquez API hostname
MARQUEZ_PORT5000Marquez API port
Feature Flags
VariableDefaultDescription
REACT_APP_ADVANCED_SEARCHfalseEnable advanced search features (build-time)

Data Persistence (Volumes)

Marquez Web is stateless. All data is stored in the Marquez backend (PostgreSQL).

NOTE: No persistent volumes are required for the web container.


Network Configuration

PortService
3000Web UI (Express server with API proxy)
Proxy Architecture

The web container runs an Express server that:

  1. Serves static React assets
  2. Proxies API calls to the Marquez backend

No CORS configuration required — all API requests go through the same origin.


Security

Non-root Architecture

The image runs as a non-root Node.js user in Alpine Linux.

Authentication

IMPORTANT: Marquez Web does not provide authentication. Protect access using:

  1. Network policies (Kubernetes)
  2. Reverse proxy with authentication (nginx, Traefik)
  3. Service mesh (Istio, Linkerd)
Vulnerability Scanning
# Trivy
trivy image ilum/marquez-web:0.53.0

Building the Image

Run from the web/ directory:

# Build multi-arch image
docker buildx build \
  --platform linux/amd64,linux/arm64 \
  -t ilum/marquez-web:0.53.0 \
  --build-arg REACT_APP_ADVANCED_SEARCH=true \
  --push .

Image Verification

Layer Analysis (Dive)
dive ilum/marquez-web:0.53.0
Software Bill of Materials (SBOM)
syft ilum/marquez-web:0.53.0 -o spdx-json > sbom.json

Image Contents — Details

Build Components
  • Build Stage: Node 18 Alpine + Webpack 5
  • Runtime Stage: Node 24 Alpine + Express 4
Frontend Stack
  • Framework: React 18.2 + TypeScript 4.9
  • UI Library: MUI 5 (Material-UI)
  • State Management: Redux 4.2 + Redux-Saga 1.2
  • Routing: React Router DOM 6.11
  • Visualization: D3.js 7.8
  • Internationalization: i18next
Key Features
  • Lineage Graph: D3-based interactive lineage visualization
  • JSON Viewer: OpenLineage facet exploration
  • Dark/Light Mode: Theme support via MUI
  • Responsive Design: Mobile-friendly layout

Architecture

┌─────────────────────────────────────────────────────┐
│                    Browser                          │
│         http://localhost:3000                       │
└──────────────────────┬──────────────────────────────┘
                       │
                       ▼
┌─────────────────────────────────────────────────────┐
│           ilum/marquez-web (Node + Express)         │
│  ┌─────────────────┐  ┌─────────────────────────┐   │
│  │  Static Assets  │  │   API Proxy (/api/*)    │   │
│  │   (React SPA)   │  │  → marquez:5000         │   │
│  └─────────────────┘  └─────────────────────────┘   │
│              Port 3000                              │
└──────────────────────┬──────────────────────────────┘
                       │
                       ▼
┌─────────────────────────────────────────────────────┐
│              ilum/marquez (Backend API)             │
│                   Port 5000                         │
└─────────────────────────────────────────────────────┘

Docker Compose Example

version: '3.8'
services:
  marquez-web:
    image: ilum/marquez-web:0.53.0
    ports:
      - "3000:3000"
    environment:
      MARQUEZ_HOST: marquez
      MARQUEZ_PORT: 5000
    depends_on:
      - marquez

  marquez:
    image: ilum/marquez:0.53.0
    ports:
      - "5000:5000"
      - "5001:5001"
    environment:
      POSTGRES_HOST: postgres
      POSTGRES_DB: marquez
      POSTGRES_USER: marquez
      POSTGRES_PASSWORD: marquez
    depends_on:
      - postgres

  postgres:
    image: postgres:14
    environment:
      POSTGRES_DB: marquez
      POSTGRES_USER: marquez
      POSTGRES_PASSWORD: marquez

Support and Feedback

Tag summary

Content type

Image

Digest

sha256:d16fe764f

Size

67.4 MB

Last updated

4 months ago

docker pull ilum/marquez-web