docs/docs/Deployment/docker-image-profiles.mdx
Langflow publishes three application image profiles. They share the same
frontend, non-root runtime, health check, SSRF defaults, and langflow
executable. Choose the smallest profile that contains every extension used by
your flows.
| Profile | Docker Hub image | GitHub Container Registry image | Included inventory |
|---|---|---|---|
| Base | langflowai/langflow:base-VERSION | ghcr.io/langflow-ai/langflow:base-VERSION | The runnable langflow-base application and built-in LFX components, without provider extension distributions |
| Default | langflowai/langflow:VERSION | ghcr.io/langflow-ai/langflow:VERSION | Base plus the curated standalone lfx-* extensions included by pip install langflow |
| Extended | langflowai/langflow-all:VERSION | ghcr.io/langflow-ai/langflow-all:VERSION | The langflow[bundles] inventory: default plus the no-Torch long tail and opt-in standalone extensions |
The base and default profiles use the langflow image repository. The extended
profile uses the separate langflow-all repository. All three profiles use the
same Langflow 1.12 version; the base image isn't independently versioned.
The base profile intentionally contains no provider extension distributions, PyTorch, or TorchVision. A flow that references an omitted component cannot run until you select a profile that provides it or install the reviewed extension in a derived image.
Use a versioned tag in deployments:
services:
langflow:
image: langflowai/langflow:base-1.12.0
The moving tags are langflowai/langflow:base-latest,
langflowai/langflow:latest, and langflowai/langflow-all:latest. They are
convenient for local evaluation, but they can select a new release without a
configuration change. Production deployments should pin a version tag and,
when reproducibility is required, the registry digest:
services:
langflow:
image: langflowai/langflow:base-1.12.0@sha256:IMAGE_DIGEST
Record both the tag and digest in release records. A tag identifies the Langflow release; the digest identifies the exact multi-platform image selected by the deployment.
Changing a profile changes the installed component inventory. Changing a version can also run database migrations at application startup. Treat either change as a deployment migration:
Moving from default or extended to base is safe only when no saved flow depends on a removed extension. To add a bounded provider set, derive an image from the versioned base image and install the reviewed extension packages at image-build time:
FROM langflowai/langflow:base-1.12.0
RUN uv pip install --python /app/.venv/bin/python \
"lfx-openai==COMPATIBLE_VERSION"
Build and test the derived image before deployment. Do not install or remove provider packages in a running container, because that makes replicas and rollbacks non-reproducible.
Keep the previous pinned image and database backup until the candidate passes production verification. To roll back a profile-only change on the same Langflow version, redeploy the previous digest with the unchanged persistent data. To roll back across Langflow versions after a database migration, stop the candidate, restore the pre-upgrade database backup, and redeploy the previous digest. Do not run an older application against a database that a newer version migrated unless that downgrade path is explicitly documented.
For general Docker configuration, persistence, and source builds, see Deploy Langflow on Docker.