Exécuter Docling avec Docker (docling-serve)

Exécutez l'API HTTP officielle docling-serve en conteneur — sans environnement Python. Choisissez la bonne image (CPU vs CUDA), publiez le port 5001, activez l'UI et testez avec curl. Le déploiement avancé vit dans le projet officiel docling-serve.

1
Step 1

Quand Docker est (et n'est pas) la réponse

  • Utilisez Docker quand une app, un pipeline ou une équipe a besoin de Docling via HTTP (/v1/convert/source), de déploiements reproductibles ou d'isolation du Python hôte.
  • Omettez Docker pour une conversion locale ponctuelle — pip install docling plus docling convert file.pdf --to md est plus rapide (voir l'aperçu).
  • Les images sont grosses (4–11 Go) : base/CPU ~4,4 Go, CUDA 12.8 ~11,4 Go. Tirez une fois, réutilisez partout.
2
Step 2

Quelle image tirer : CPU vs CUDA

Toutes les images sont publiées sur quay.io/docling-project/… et ghcr.io/docling-project/… pour linux/amd64 (base/CPU en plus arm64). Remplacez docker par podman si c'est votre runtime. Règle de tags : les images base/CPU utilisent latest et main ; les images CUDA n'ont volontairement pas de latest (CUDA se périme avec PyTorch). Épinglez toujours les CUDA explicitement, p. ex. quay.io/docling-project/docling-serve-cu130:v1.18.0. Une image ROCm existe mais n'est pas publiée (compilez localement) ; des images slim sans poids pré-téléchargés sont prévues.

docker pull quay.io/docling-project/docling-serve-cpu
docker pull quay.io/docling-project/docling-serve-cu130:v1.18.0
ImageQuandArch / taille
docling-serve / docling-serve-cpuServeurs CPU-only, portables, CIamd64 + arm64, ~4,4 Go
docling-serve-cu128GPU NVIDIA avec CUDA 12.8amd64, ~11,4 Go
docling-serve-cu130GPU NVIDIA avec CUDA 13.0amd64 (+arm64), taille TBD
3
Step 3

Démarrez le serveur (Docker / Podman)

CPU (le plus courant). Le premier démarrage télécharge les poids dans le cache de l'image — prévoyez temps et disque. Déploiements compose dans docs/deployment.md. GPU CUDA (exige nvidia-container-toolkit / --gpus).

podman run -p 5001:5001 -e DOCLING_SERVE_ENABLE_UI=1 quay.io/docling-project/docling-serve
docker run --gpus all -p 5001:5001 -e DOCLING_SERVE_ENABLE_UI=1 quay.io/docling-project/docling-serve-cu130:v1.18.0
4
Step 4

Alternative : docling-serve via pip

Le même serveur sans conteneurs — utile sur une VM ou pour déboguer :

pip install "docling-serve[ui]"
docling-serve run --enable-ui
5
Step 5

Ports, docs, UI et health check

Si /docs s'affiche, le serveur est sain. Si le port est occupé, remappez avec -p 5002:5001 et utilisez :5002 dans les URL.

  • API de base : http://127.0.0.1:5001
  • Docs API interactives (Swagger) : http://127.0.0.1:5001/docs
  • UI de test : http://127.0.0.1:5001/ui (uniquement avec DOCLING_SERVE_ENABLE_UI=1 / --enable-ui)
  • Endpoint de conversion stable : POST /v1/convert/source (API v1 — avec du vieux code, voir les notes de migration v1).
6
Step 6

Convertissez votre premier document via l'API

La réponse contient Markdown / JSON / HTML selon les options demandées. Explorez chaque option dans docs/usage.md et la référence REST des docs docling-serve.

curl -X POST http://localhost:5001/v1/convert/source -H 'Content-Type: application/json' -d '{"sources": [{"kind": "http", "url": "https://arxiv.org/pdf/2501.17887"}]}'
curl -X 'POST' \
  'http://localhost:5001/v1/convert/source' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "sources": [{"kind": "http", "url": "https://arxiv.org/pdf/2501.17887"}]
  }'
7
Step 7

Notes de configuration et déploiement

  • Configurez via variables d'environnement (voir .env.example et docs/configuration.md), p. ex. DOCLING_SERVE_ENABLE_UI=1.
  • Montez un volume de cache pour que les poids survivent aux redémarrages ; fixez des limites mémoire pour les gros PDF (voir mémoire pleine).
  • Mettez auth / TLS / limites dans un reverse proxy en production ; les exemples compose de docs/deployment.md sont le point de départ.
  • Épinglez les tags en production (:v1.18.0, pas :latest) — surtout les CUDA.
8
Step 8

Problèmes de conteneurs fréquents

  • Le serveur ne démarre pas — voir docling-serve ne démarre pas : conflit de port, extra [ui] manquant ou entrypoint erroné.
  • /ui 404 — vous avez oublié DOCLING_SERVE_ENABLE_UI=1 / --enable-ui.
  • L'image GPU tourne sur CPU — l'hôte a besoin des pilotes NVIDIA + toolkit et de --gpus all ; confirmez dedans avec nvidia-smi.
  • Le pull de :latest CUDA échoue — attendu : les images CUDA ne portent que des tags de version explicites.
  • Première requête lente — les poids se téléchargent ; les suivantes réutilisent le cache.
9
Step 9

FAQ Docker

Docker ou pip install ?
Pip (pip install docling) pour la conversion CLI locale. Docker (docling-serve) quand vous avez besoin d'une API HTTP agnostique pour app ou équipe.
Quel registre — quay.io ou ghcr.io ?
Les deux reflètent les mêmes images. Prenez le plus rapide ou autorisé dans votre environnement.
Pourquoi pas de tag :latest CUDA ?
Les versions CUDA se périment à mesure que PyTorch avance, donc :latest pourrait changer votre CUDA en silence. Épinglez des versions explicites comme -cu130:v1.18.0.
Où est la doc API ?
En direct sur votre serveur sous /docs, plus les guides d'utilisation, de configuration et de déploiement en amont.

Le déploiement avancé est documenté dans le projet officiel docling-serve. Vérifié avec Docling v2.129.0 · Dernière vérification 2026-09-22 · Source officielle