125 lines
3.5 KiB
YAML
125 lines
3.5 KiB
YAML
# ============================================================
|
|
# AI Markdown Demo — MarkItDown vs Docling
|
|
# ============================================================
|
|
# Naming convention: <layer>-<service>
|
|
#
|
|
# ui :8484 — Comparison UI (nginx)
|
|
# api-markitdown:8282 — MarkItDown API (Microsoft)
|
|
# api-docling :8383 — Docling API (IBM)
|
|
# db-markitdown :5432 — PostgreSQL for markitdown
|
|
# db-docling :— — PostgreSQL for docling (internal only)
|
|
# db-admin :5050 — Adminer
|
|
# ============================================================
|
|
|
|
x-healthcheck-defaults: &healthcheck-defaults
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
x-service-defaults: &service-defaults
|
|
restart: unless-stopped
|
|
networks:
|
|
- app-network
|
|
|
|
# ==========================
|
|
# Services
|
|
# ==========================
|
|
services:
|
|
|
|
# --- UI layer ---------------------------------------------------
|
|
ui:
|
|
image: caddy:alpine
|
|
<<: *service-defaults
|
|
ports:
|
|
- "8484:80"
|
|
volumes:
|
|
- ./frontend/Caddyfile:/etc/caddy/Caddyfile:ro
|
|
- ./frontend:/srv:ro
|
|
|
|
# --- API layer --------------------------------------------------
|
|
api-markitdown:
|
|
build:
|
|
context: ./markitdown-service
|
|
<<: *service-defaults
|
|
ports:
|
|
- "8282:8000"
|
|
env_file: .env
|
|
environment:
|
|
DATABASE_URL: postgresql://${POSTGRES_USER:-admin}:${POSTGRES_PASSWORD:-admin}@db-markitdown:5432/${POSTGRES_DB:-markitdown}
|
|
OLLAMA_BASE_URL: ${OLLAMA_BASE_URL:-}
|
|
OLLAMA_MODEL: ${OLLAMA_MODEL:-llava}
|
|
depends_on:
|
|
db-markitdown:
|
|
condition: service_healthy
|
|
|
|
api-docling:
|
|
build:
|
|
context: ./docling-service
|
|
<<: *service-defaults
|
|
ports:
|
|
- "8383:8000"
|
|
env_file: .env
|
|
environment:
|
|
DATABASE_URL: postgresql://${POSTGRES_USER:-admin}:${POSTGRES_PASSWORD:-admin}@db-docling:5432/docling
|
|
OLLAMA_BASE_URL: ${OLLAMA_BASE_URL:-}
|
|
OLLAMA_MODEL: ${OLLAMA_MODEL:-llava}
|
|
depends_on:
|
|
db-docling:
|
|
condition: service_healthy
|
|
|
|
# --- Database layer ---------------------------------------------
|
|
db-markitdown:
|
|
image: postgres:16-alpine
|
|
<<: *service-defaults
|
|
env_file: .env
|
|
environment:
|
|
POSTGRES_DB: ${POSTGRES_DB:-markitdown}
|
|
POSTGRES_USER: ${POSTGRES_USER:-admin}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-admin}
|
|
volumes:
|
|
- db_markitdown_data:/var/lib/postgresql/data
|
|
- ./db/init.sql:/docker-entrypoint-initdb.d/init.sql:ro
|
|
ports:
|
|
- "5432:5432"
|
|
healthcheck:
|
|
<<: *healthcheck-defaults
|
|
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-admin} -d ${POSTGRES_DB:-markitdown}"]
|
|
|
|
db-docling:
|
|
image: postgres:16-alpine
|
|
<<: *service-defaults
|
|
env_file: .env
|
|
environment:
|
|
POSTGRES_DB: docling
|
|
POSTGRES_USER: ${POSTGRES_USER:-admin}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-admin}
|
|
volumes:
|
|
- db_docling_data:/var/lib/postgresql/data
|
|
- ./db/init_docling.sql:/docker-entrypoint-initdb.d/init.sql:ro
|
|
healthcheck:
|
|
<<: *healthcheck-defaults
|
|
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-admin} -d docling"]
|
|
|
|
# --- Admin layer ------------------------------------------------
|
|
db-admin:
|
|
image: adminer:4.8.1
|
|
<<: *service-defaults
|
|
ports:
|
|
- "5050:8080"
|
|
environment:
|
|
ADMINER_DEFAULT_SERVER: db-markitdown
|
|
depends_on:
|
|
db-markitdown:
|
|
condition: service_healthy
|
|
|
|
# ==========================
|
|
# Infrastructure
|
|
# ==========================
|
|
networks:
|
|
app-network:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
db_markitdown_data:
|
|
db_docling_data:
|