
- Infrastructure complète de traitement de documents notariaux - API FastAPI d'ingestion et d'orchestration - Pipelines Celery pour le traitement asynchrone - Support des formats PDF, JPEG, PNG, TIFF, HEIC - OCR avec Tesseract et correction lexicale - Classification automatique des documents avec Ollama - Extraction de données structurées - Indexation dans AnythingLLM et OpenSearch - Système de vérifications et contrôles métier - Base de données PostgreSQL pour le métier - Stockage objet avec MinIO - Base de données graphe Neo4j - Recherche plein-texte avec OpenSearch - Supervision avec Prometheus et Grafana - Scripts d'installation pour Debian - Documentation complète - Tests unitaires et de performance - Service systemd pour le déploiement - Scripts de déploiement automatisés
161 lines
3.5 KiB
YAML
161 lines
3.5 KiB
YAML
version: "3.9"
|
|
|
|
x-env: &default-env
|
|
TZ: ${TZ}
|
|
PUID: "1000"
|
|
PGID: "1000"
|
|
|
|
services:
|
|
|
|
postgres:
|
|
image: postgres:16
|
|
environment:
|
|
POSTGRES_USER: ${POSTGRES_USER}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
|
POSTGRES_DB: ${POSTGRES_DB}
|
|
volumes:
|
|
- pgdata:/var/lib/postgresql/data
|
|
restart: unless-stopped
|
|
|
|
redis:
|
|
image: redis:7
|
|
command: ["redis-server", "--appendonly", "yes"]
|
|
volumes:
|
|
- redis:/data
|
|
restart: unless-stopped
|
|
|
|
minio:
|
|
image: minio/minio:RELEASE.2025-01-13T00-00-00Z
|
|
command: server /data --console-address ":9001"
|
|
environment:
|
|
MINIO_ROOT_USER: ${MINIO_ROOT_USER}
|
|
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}
|
|
volumes:
|
|
- minio:/data
|
|
ports:
|
|
- "9000:9000"
|
|
- "9001:9001"
|
|
restart: unless-stopped
|
|
|
|
anythingsqlite:
|
|
image: kevincharm/anythingllm:latest
|
|
environment:
|
|
- DISABLE_AUTH=true
|
|
depends_on:
|
|
- ollama
|
|
ports:
|
|
- "3001:3001"
|
|
container_name: anythingllm
|
|
restart: unless-stopped
|
|
|
|
ollama:
|
|
image: ollama/ollama:latest
|
|
volumes:
|
|
- ollama:/root/.ollama
|
|
ports:
|
|
- "11434:11434"
|
|
restart: unless-stopped
|
|
|
|
neo4j:
|
|
image: neo4j:5
|
|
environment:
|
|
- NEO4J_AUTH=${NEO4J_AUTH}
|
|
volumes:
|
|
- neo4j:/data
|
|
ports:
|
|
- "7474:7474"
|
|
- "7687:7687"
|
|
restart: unless-stopped
|
|
|
|
opensearch:
|
|
image: opensearchproject/opensearch:2.14.0
|
|
environment:
|
|
- discovery.type=single-node
|
|
- OPENSEARCH_INITIAL_ADMIN_PASSWORD=${OPENSEARCH_PASSWORD}
|
|
ulimits:
|
|
memlock:
|
|
soft: -1
|
|
hard: -1
|
|
volumes:
|
|
- opensearch:/usr/share/opensearch/data
|
|
ports:
|
|
- "9200:9200"
|
|
restart: unless-stopped
|
|
|
|
host-api:
|
|
build:
|
|
context: ../docker/host-api
|
|
env_file: ./.env
|
|
environment:
|
|
<<: *default-env
|
|
DATABASE_URL: postgresql+psycopg://$POSTGRES_USER:$POSTGRES_PASSWORD@postgres:5432/$POSTGRES_DB
|
|
REDIS_URL: redis://redis:6379/0
|
|
MINIO_ENDPOINT: http://minio:9000
|
|
MINIO_BUCKET: ${MINIO_BUCKET}
|
|
ANYLLM_BASE_URL: ${ANYLLM_BASE_URL}
|
|
ANYLLM_API_KEY: ${ANYLLM_API_KEY}
|
|
OLLAMA_BASE_URL: ${OLLAMA_BASE_URL}
|
|
volumes:
|
|
- ../services/host_api:/app
|
|
- ../ops/seed:/seed:ro
|
|
- ../ops/seed/schemas:/schemas:ro
|
|
ports:
|
|
- "8000:8000"
|
|
depends_on:
|
|
- postgres
|
|
- redis
|
|
- minio
|
|
- ollama
|
|
- anythingsqlite
|
|
- neo4j
|
|
- opensearch
|
|
restart: unless-stopped
|
|
|
|
worker:
|
|
build:
|
|
context: ../docker/worker
|
|
env_file: ./.env
|
|
environment:
|
|
<<: *default-env
|
|
DATABASE_URL: postgresql+psycopg://$POSTGRES_USER:$POSTGRES_PASSWORD@postgres:5432/$POSTGRES_DB
|
|
REDIS_URL: redis://redis:6379/0
|
|
MINIO_ENDPOINT: http://minio:9000
|
|
MINIO_BUCKET: ${MINIO_BUCKET}
|
|
ANYLLM_BASE_URL: ${ANYLLM_BASE_URL}
|
|
ANYLLM_API_KEY: ${ANYLLM_API_KEY}
|
|
OLLAMA_BASE_URL: ${OLLAMA_BASE_URL}
|
|
OPENSEARCH_URL: http://opensearch:9200
|
|
NEO4J_URL: bolt://neo4j:7687
|
|
NEO4J_AUTH: ${NEO4J_AUTH}
|
|
volumes:
|
|
- ../services/worker:/app
|
|
- ../ops/seed:/seed:ro
|
|
depends_on:
|
|
- host-api
|
|
restart: unless-stopped
|
|
|
|
prometheus:
|
|
image: prom/prometheus:v2.54.1
|
|
volumes:
|
|
- prometheus:/prometheus
|
|
restart: unless-stopped
|
|
|
|
grafana:
|
|
image: grafana/grafana:11.1.0
|
|
volumes:
|
|
- grafana:/var/lib/grafana
|
|
- ../services/charts:/var/lib/grafana/dashboards:ro
|
|
ports:
|
|
- "3000:3000"
|
|
restart: unless-stopped
|
|
|
|
volumes:
|
|
pgdata:
|
|
redis:
|
|
minio:
|
|
ollama:
|
|
neo4j:
|
|
opensearch:
|
|
prometheus:
|
|
grafana:
|