Docker Deployment Guide

Run the full Pranor platform or individual modules using Docker Compose.

Quick Start — Full Platform

git clone https://github.com/vyuvaraj/pranor.git
cd pranor
docker compose up -d

This starts all modules:

ServicePortDescription
pranor-gate8080API Gateway
pranor-vault8081Object Storage (S3)
pranor-pulse8082Message Broker (STOMP)
pranor-console8083Dashboard UI
pranor-deploy8085Deployment Orchestrator
pranor-cache8086Cache Engine
pranor-chrono8087Job Scheduler
pranor-hub8088Package Registry
pranor-mesh8089Service Mesh
pranor-trace8090Tracing Collector
pranor-notify8094Notification Gateway
pranor-flow8096Workflow Engine
pranor-pool8097DB Connection Pool
pranor-auth8098Auth Provider
pranor-tunnel8443Dev Tunnel

Single Module

Run any module standalone:

# Just the API Gateway
docker run -p 8080:8080 ghcr.io/vyuvaraj/pranor-gate:latest

# Just the Object Storage
docker run -p 8081:8081 -v vault-data:/data ghcr.io/vyuvaraj/pranor-vault:latest

# Just the Message Broker
docker run -p 8082:8082 -p 61613:61613 ghcr.io/vyuvaraj/pranor-pulse:latest

Environment Variables

All modules accept:

VariableDescription
PRANOR_OTLP_ENDPOINTOpenTelemetry collector URL
PRANOR_DISCOVERYJSON map of module URLs for service discovery

Module-specific variables are documented in each module's docs.

Docker Compose (Production)

services:
  pranor-gate:
    image: ghcr.io/vyuvaraj/pranor-gate:latest
    ports:
      - "8080:8080"
    environment:
      - PRANOR_OTLP_ENDPOINT=http://pranor-trace:8090
    depends_on:
      pranor-trace:
        condition: service_healthy
    healthcheck:
      test: ["CMD", "wget", "--spider", "http://localhost:8080/healthz"]
      interval: 5s
      timeout: 3s
      retries: 5

  pranor-vault:
    image: ghcr.io/vyuvaraj/pranor-vault:latest
    ports:
      - "8081:8081"
    volumes:
      - vault-data:/data
    environment:
      - PRANOR_OTLP_ENDPOINT=http://pranor-trace:8090

  pranor-trace:
    image: ghcr.io/vyuvaraj/pranor-trace:latest
    ports:
      - "8090:8090"

networks:
  default:
    name: pranor-net

volumes:
  vault-data:

Health Checks

Every module exposes GET /healthz returning:

{"status": "UP", "service": "pranor", "version": "1.0.0"}

Observability

Connect all modules to Pranor Trace for distributed tracing:

PRANOR_OTLP_ENDPOINT=http://pranor-trace:8090

View traces in Pranor Console at http://localhost:8083 or forward to Jaeger/Grafana.

Next Steps