f4f853d94b
Datafabrik: - Skördare: crawler, källvitlista, upphandlingsskördare - Extraktor: LLM-baserad schemastyrd extraktion - Upplösare: Entitetsupplösning och deduplicering - Köer: Schemalagd / kunddriven / fält - Agentorkestrering: 20+ parallella agenter Vision: - Identify-modell: ResNet50 + kontrastivt lärande - Träningspipeline: NT-Xent loss - Vektordatabas: FAISS för snabb sökning - OCR-pipeline: Typskyltsläsning Infrastruktur: - Docker Compose production - Terraform för AWS ECS - Prometheus + Grafana monitorering - Neo4j + FAISS + MinIO + Redis
149 lines
4.0 KiB
YAML
149 lines
4.0 KiB
YAML
version: "3.9"
|
|
|
|
services:
|
|
# ─── API ───────────────────────────────────────────────
|
|
api:
|
|
build: ./api
|
|
ports:
|
|
- "8081:8080"
|
|
volumes:
|
|
- ./10-data:/app/data:ro
|
|
- ./vision/modeller:/models:ro
|
|
environment:
|
|
- DATA_DIR=/app/data
|
|
- NEO4J_URI=bolt://neo4j:7687
|
|
- NEO4J_USER=neo4j
|
|
- NEO4J_PASSWORD=${NEO4J_PASSWORD}
|
|
- VISION_MODEL_PATH=/models/landvex-vision-model.pt
|
|
depends_on:
|
|
- neo4j
|
|
- vectordb
|
|
restart: unless-stopped
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 2G
|
|
|
|
# ─── Neo4j (Property Graph) ────────────────────────────
|
|
neo4j:
|
|
image: neo4j:5.19-enterprise
|
|
ports:
|
|
- "7474:7474"
|
|
- "7687:7687"
|
|
environment:
|
|
- NEO4J_AUTH=neo4j/${NEO4J_PASSWORD}
|
|
- NEO4J_PLUGINS=["apoc"]
|
|
- NEO4J_dbms_memory_heap_max__size=8G
|
|
- NEO4J_dbms_memory_pagecache_size=4G
|
|
volumes:
|
|
- neo4j_data:/data
|
|
- neo4j_logs:/logs
|
|
restart: unless-stopped
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 12G
|
|
|
|
# ─── Vektordatabas (FAISS) ─────────────────────────────
|
|
vectordb:
|
|
build: ./vision/embeddings
|
|
ports:
|
|
- "8082:8080"
|
|
volumes:
|
|
- vectordb_data:/data
|
|
environment:
|
|
- FAISS_INDEX_DIR=/data
|
|
restart: unless-stopped
|
|
|
|
# ─── Datafabrik (Skördning + Extraktion) ───────────────
|
|
datafabrik:
|
|
build: ./datafabrik
|
|
volumes:
|
|
- datafabrik_output:/data/output
|
|
- datafabrik_koer:/data/koer
|
|
environment:
|
|
- OPENAI_API_KEY=${OPENAI_API_KEY}
|
|
- DATAFABRIK_KO_DIR=/data/koer
|
|
- DATAFABRIK_OUTPUT=/data/output
|
|
restart: unless-stopped
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 4G
|
|
|
|
# ─── Vision-träning (GPU) ──────────────────────────────
|
|
vision-trainer:
|
|
build: ./vision
|
|
volumes:
|
|
- vision_models:/models
|
|
- vision_dataset:/data/dataset
|
|
environment:
|
|
- CUDA_VISIBLE_DEVICES=0
|
|
- VISION_MODEL_DIR=/models
|
|
- VISION_DATASET_DIR=/data/dataset
|
|
deploy:
|
|
resources:
|
|
reservations:
|
|
devices:
|
|
- driver: nvidia
|
|
count: 1
|
|
capabilities: [gpu]
|
|
profiles: ["training"]
|
|
|
|
# ─── MinIO (Objektlagring för bilder/dokument) ─────────
|
|
minio:
|
|
image: minio/minio:latest
|
|
ports:
|
|
- "9000:9000"
|
|
- "9001:9001"
|
|
environment:
|
|
- MINIO_ROOT_USER=${MINIO_USER:-landvex}
|
|
- MINIO_ROOT_PASSWORD=${MINIO_PASSWORD:-landvex2024}
|
|
volumes:
|
|
- minio_data:/data
|
|
command: server /data --console-address ":9001"
|
|
restart: unless-stopped
|
|
|
|
# ─── Redis (Köer och cache) ────────────────────────────
|
|
redis:
|
|
image: redis:7-alpine
|
|
ports:
|
|
- "6379:6379"
|
|
volumes:
|
|
- redis_data:/data
|
|
restart: unless-stopped
|
|
|
|
# ─── Prometheus (Metriker) ─────────────────────────────
|
|
prometheus:
|
|
image: prom/prometheus:latest
|
|
ports:
|
|
- "9090:9090"
|
|
volumes:
|
|
- ./infrastruktur/monitorering/prometheus.yml:/etc/prometheus/prometheus.yml:ro
|
|
- prometheus_data:/prometheus
|
|
restart: unless-stopped
|
|
|
|
# ─── Grafana (Dashboards) ──────────────────────────────
|
|
grafana:
|
|
image: grafana/grafana:latest
|
|
ports:
|
|
- "3000:3000"
|
|
environment:
|
|
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD:-landvex}
|
|
volumes:
|
|
- grafana_data:/var/lib/grafana
|
|
restart: unless-stopped
|
|
|
|
volumes:
|
|
neo4j_data:
|
|
neo4j_logs:
|
|
vectordb_data:
|
|
datafabrik_output:
|
|
datafabrik_koer:
|
|
vision_models:
|
|
vision_dataset:
|
|
minio_data:
|
|
redis_data:
|
|
prometheus_data:
|
|
grafana_data:
|