Files
langflow/next/develop-application.html
2026-05-15 20:19:53 +00:00

194 lines
55 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-Deployment/develop-application" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.9.2">
<title data-rh="true">Containerize a Langflow application | Langflow Documentation</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://docs.langflow.org/next/develop-application"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Containerize a Langflow application | Langflow Documentation"><meta data-rh="true" name="description" content="Designing flows in the visual editor is only the first step in building an application that uses Langflow."><meta data-rh="true" property="og:description" content="Designing flows in the visual editor is only the first step in building an application that uses Langflow."><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://docs.langflow.org/next/develop-application"><link data-rh="true" rel="alternate" href="https://docs.langflow.org/next/develop-application" hreflang="en"><link data-rh="true" rel="alternate" href="https://docs.langflow.org/next/develop-application" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://UZK6BDPCVY-dsn.algolia.net" crossorigin="anonymous"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Containerize a Langflow application","item":"https://docs.langflow.org/next/develop-application"}]}</script><link rel="preconnect" href="https://www.google-analytics.com">
<link rel="preconnect" href="https://www.googletagmanager.com">
<script async src="https://www.googletagmanager.com/gtag/js?id=G-SLQFLQ3KPT"></script>
<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-SLQFLQ3KPT",{})</script>
<link rel="search" type="application/opensearchdescription+xml" title="Langflow Documentation" href="/opensearch.xml">
<script>window._ibmAnalytics={settings:{name:"DataStax",tealiumProfileName:"ibm-subsidiary"},trustarc:{privacyPolicyLink:"https://ibm.com/privacy"},"digitalData.page.services.google.enabled":!0},window.digitalData={page:{pageInfo:{ibm:{siteId:"IBM_"+_ibmAnalytics.settings.name},segment:{enabled:!0,env:"prod",key:"B04fNhD06DqDPuaRfQl5lZ2iQICdxxuh",coremetrics:!1,carbonComponentEvents:!1}},category:{primaryCategory:"PC230"}},commonProperties:{productTitle:"IBM Elite Support for Langflow",productCode:"5900BUB",productCodeType:"WWPC",UT30:"30AS5",instanceId:"docs-site",subscriptionId:"public-access",productPlanName:"Public",productPlanType:"freemium",userId:"IBMid-ANONYMOUS"}}</script>
<script src="//1.www.s81c.com/common/stats/ibm-common.js" async="true"></script>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Geist:wght@300;400;500;600;700&amp;family=Geist+Mono:wght@400;500&amp;family=Sora:wght@550;600&amp;display=swap">
<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("consent","default",{ad_storage:"denied",ad_user_data:"denied",ad_personalization:"denied",analytics_storage:"denied"})</script>
<script>!function(){function e(){if(void 0!==window.truste&&window.truste.cma){var e=window.truste.cma.callApi("getConsent",window.location.href)||{},n=1===e[2],t=1===e[3];gtag("consent","update",{ad_storage:n?"granted":"denied",ad_user_data:n?"granted":"denied",ad_personalization:n?"granted":"denied",analytics_storage:t?"granted":"denied"})}}window.addEventListener&&(window.addEventListener("cm_data_subject_consent_changed",e),window.addEventListener("cm_consent_preferences_set",e)),"complete"===document.readyState?e():window.addEventListener("load",e)}()</script><link rel="stylesheet" href="/assets/css/styles.d29a2eb4.css">
<script src="/assets/js/runtime~main.81376a44.js" defer="defer"></script>
<script src="/assets/js/main.18ca0898.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||(window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light")),document.documentElement.setAttribute("data-theme-choice",t||"system")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="theme-layout-navbar navbar navbar--fixed-top"><div class="navbar__inner"><div class="theme-layout-navbar-left navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/lf-docs-light.svg" alt="Langflow" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/lf-docs-dark.svg" alt="Langflow" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div></a><div class="navbar__item dropdown dropdown--hoverable"><a aria-current="page" class="navbar__link active" aria-haspopup="true" aria-expanded="false" role="button" href="/next/develop-application">1.10.x (Next)</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/next/develop-application">1.10.x (Next)</a></li><li><a class="dropdown__link" href="/develop-application">1.9.x</a></li><li><a class="dropdown__link" href="/1.8.0/develop-application">1.8.x</a></li></ul></div></div><div class="theme-layout-navbar-right navbar__items navbar__items--right"><a href="https://github.com/langflow-ai/langflow" target="_blank" class="navbar__item navbar__link header-github-link" aria-label="GitHub" data-event="UI Interaction" data-action="clicked" data-channel="docs" data-element-id="social-github" data-namespace="header" data-platform-title="Langflow"></a><a href="https://twitter.com/langflow_ai" target="_blank" class="navbar__item navbar__link header-twitter-link" aria-label="Twitter" data-event="UI Interaction" data-action="clicked" data-channel="docs" data-element-id="social-twitter" data-namespace="header" data-platform-title="Langflow"></a><a href="https://discord.gg/EqksyE2EX9" target="_blank" class="navbar__item navbar__link header-discord-link" aria-label="Discord" data-event="UI Interaction" data-action="clicked" data-channel="docs" data-element-id="social-discord" data-namespace="header" data-platform-title="Langflow"></a><div class="toggle_MW0i colorModeToggle_DEke"><button class="clean-btn toggleButton_yw5v toggleButtonDisabled_BJd7" type="button" disabled="" title="system mode" aria-label="Switch between dark and light mode (currently system mode)"><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" focusable="false" role="presentation" class="toggleIcon_oIOL lightToggleIcon_SFTY"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" focusable="false" role="presentation" class="toggleIcon_oIOL darkToggleIcon_ekgs"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" focusable="false" role="presentation" class="toggleIcon_oIOL systemToggleIcon_yi_a"><path fill="currentColor" d="m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search (Meta+k)" aria-keyshortcuts="Meta+k"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 24 24" aria-hidden="true"><circle cx="11" cy="11" r="8" stroke="currentColor" fill="none" stroke-width="1.4"></circle><path d="m21 21-4.3-4.3" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="theme-layout-main main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside aria-label="Documentation sidebar" class="theme-doc-sidebar-container docSidebarContainer_RSuS"><div class="sidebarViewport_pYEE"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 sidebar-group-divider"><div class="sidebar-group-label">Build</div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed sidebar-category-with-icon sidebar-icon-rocket"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/next"><span title="Get started" class="categoryLinkLabel_W154">Get started</span></a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed sidebar-category-with-icon sidebar-icon-workflow"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/next/concepts-overview"><span title="Flows" class="categoryLinkLabel_W154">Flows</span></a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed sidebar-category-with-icon sidebar-icon-bot"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/next/agents"><span title="Agents" class="categoryLinkLabel_W154">Agents</span></a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed sidebar-category-with-icon sidebar-icon-plug"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/next/mcp-client"><span title="Model Context Protocol (MCP)" class="categoryLinkLabel_W154">Model Context Protocol (MCP)</span></a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 sidebar-group-divider"><div class="sidebar-group-label">Develop & Deploy</div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed sidebar-category-with-icon sidebar-icon-code"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/next/api-keys-and-authentication"><span title="Develop" class="categoryLinkLabel_W154">Develop</span></a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item sidebar-category-with-icon sidebar-icon-cloud"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" role="button" aria-expanded="true" href="/next/deployment-overview"><span title="Deploy" class="categoryLinkLabel_W154">Deploy</span></a></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/next/deployment-overview"><span title="Langflow deployment overview" class="linkLabel_WmDU">Langflow deployment overview</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/next/deployment-public-server"><span title="Deploy a public Langflow server" class="linkLabel_WmDU">Deploy a public Langflow server</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/next/deployment-nginx-ssl"><span title="Deploy Langflow with Nginx and SSL" class="linkLabel_WmDU">Deploy Langflow with Nginx and SSL</span></a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" role="button" aria-expanded="true" tabindex="0" href="/next/develop-application"><span title="Containerized deployments" class="categoryLinkLabel_W154">Containerized deployments</span></a></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/next/develop-application"><span title="Containerize a Langflow application" class="linkLabel_WmDU">Containerize a Langflow application</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/next/deployment-docker"><span title="Langflow Docker images" class="linkLabel_WmDU">Langflow Docker images</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/next/deployment-caddyfile"><span title="Deploy Langflow on a remote server" class="linkLabel_WmDU">Deploy Langflow on a remote server</span></a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-3 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" tabindex="0" href="/next/deployment-architecture"><span title="Kubernetes" class="categoryLinkLabel_W154">Kubernetes</span></a></div></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" tabindex="0" href="/next/deployment-gcp"><span title="Cloud platforms" class="categoryLinkLabel_W154">Cloud platforms</span></a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/next/deployment-block-custom-components"><span title="Block custom components" class="linkLabel_WmDU">Block custom components</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/next/security"><span title="Security" class="linkLabel_WmDU">Security</span></a></li></ul></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 sidebar-group-divider"><div class="sidebar-group-label">Reference</div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed sidebar-category-with-icon sidebar-icon-blocks"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/next/concepts-components"><span title="Components reference" class="categoryLinkLabel_W154">Components reference</span></a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed sidebar-category-with-icon sidebar-icon-fileCode"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/next/api-reference-api-examples"><span title="API reference" class="categoryLinkLabel_W154">API reference</span></a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 sidebar-group-divider"><div class="sidebar-group-label">Community</div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed sidebar-category-with-icon sidebar-icon-gitPR"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/next/contributing-community"><span title="Contribute" class="categoryLinkLabel_W154">Contribute</span></a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed sidebar-category-with-icon sidebar-icon-helpCircle"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/next/troubleshoot"><span title="Support" class="categoryLinkLabel_W154">Support</span></a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 sidebar-ad">
<a href="https://www.langflow.org/desktop" target="_blank" rel="noopener noreferrer" class="menu__link">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
<g clip-path="url(#clip0_1645_37)">
<path d="M12 17H20C21.1046 17 22 16.1046 22 15V13M12 17H4C2.89543 17 2 16.1046 2 15V5C2 3.89543 2.89543 3 4 3H10M12 17V21M8 21H12M12 21H16M11.75 10.2917H13.2083L16.125 7.375H17.5833L20.5 4.45833H21.9583M16.125 11.75H17.5833L20.5 8.83333H21.9583M11.75 5.91667H13.2083L16.125 3H17.5833" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<defs>
<clipPath id="clip0_1645_37">
<rect width="24" height="24" fill="white"/>
</clipPath>
</defs>
</svg>
<div class="sidebar-ad-text-container">
<span class="sidebar-ad-text">Get started in minutes</span>
<span class="sidebar-ad-text sidebar-ad-text-gradient">Download Langflow Desktop</span>
</div>
</a>
</li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_z5aJ"><div class="theme-doc-version-banner alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for <!-- -->Langflow Documentation<!-- --> <b>1.10.x (Next)</b> version.</div><div class="margin-top--md">For up-to-date documentation, see the <b><a href="/develop-application">latest version</a></b> (<!-- -->1.9.x<!-- -->).</div></div><div class="docItemContainer_c0TR"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false" role="presentation" class="breadcrumbHomeIcon_xK9p"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Deploy</span></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Containerized deployments</span></li><li class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link">Containerize a Langflow application</span></li></ul></nav><div class="docMetaRow_c2hx"><div class="root_Eutc"><button type="button" class="button_gpNY"><span aria-hidden="true" class="icon_Bm9L"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg></span><span class="label_LzDG">Copy page</span></button></div><span class="theme-doc-version-badge badge badge--secondary">Version: 1.10.x (Next)</span></div><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Containerize a Langflow application</h1></header><style>[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }</style>
<!-- -->
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16" role="img" aria-label="Tip icon" focusable="false"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_BuS1"><p>Podman can be used instead of Docker for all commands shown here. For more information, see the <a href="https://podman.io/docs" target="_blank" rel="noopener noreferrer" class="">Podman documentation</a>.</p></div></div>
<p>Designing flows in the visual editor is only the first step in building an application that uses Langflow.</p>
<p>Once you have a functional flow, you can use that flow in a larger application, such as a website or mobile app.
Because Langflow is both an IDE and a runtime, you can use Langflow to build and test your flows locally, and then package and serve your flows in a production environment.</p>
<p>This guide introduces application development with Langflow from initial setup through packaging and deployment.
This documentation doesn&#x27;t explain how to write a complete application; it only describes how to include Langflow in the context of a larger application.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="directory-structure">Directory structure<a href="#directory-structure" class="hash-link" aria-label="Direct link to Directory structure" title="Direct link to Directory structure" translate="no"></a></h2>
<p>The following example describes the directory structure for a minimal Langflow application:</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>LANGFLOW-APPLICATION/</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>├── docker.env</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>├── Dockerfile</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>├── flows/</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>│ ├── flow1.json</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>│ └── flow2.json</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>├── langflow-config-dir/</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>├── README.md</span></div></div><br></code></div></div>
<p>This directory contains the following:</p>
<ul>
<li class=""><a href="#docker-env" class=""><code>docker.env</code></a>: This file is copied to the Docker image as a <code>.env</code> file in the container root.</li>
<li class=""><a href="#dockerfile" class=""><code>Dockerfile</code></a>: This file controls how your Langflow image is built.</li>
<li class=""><a href="#flows" class=""><code>/flows</code></a>: This folder holds the flows you want to host, which are the flows that your application uses.</li>
<li class=""><code>/langflow-config-dir</code>: This folder is referenced in the Dockerfile as the location for your Langflow deployment&#x27;s configuration files, database, and logs.</li>
<li class=""><code>README.md</code>: This is a typical README file for your application&#x27;s documentation.</li>
</ul>
<p>This is a minimal example of a Langflow application directory.
Your application might have additional files and folders, such as a <code>/components</code> folder for custom components, or a <code>pyproject.toml</code> file for additional dependencies.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="package-management">Package management<a href="#package-management" class="hash-link" aria-label="Direct link to Package management" title="Direct link to Package management" translate="no"></a></h3>
<p>The base Langflow Docker image includes the Langflow core dependencies because it uses <code>langflowai/langflow:latest</code> as the parent image.</p>
<p>If your application requires additional dependencies, create a <a href="https://packaging.python.org/en/latest/guides/writing-pyproject-toml" target="_blank" rel="noopener noreferrer" class=""><code>pyproject.toml</code></a> file for the additional dependencies.
For more information, see <a class="" href="/install-custom-dependencies">Install custom dependencies</a>.</p>
<p>To deploy an application with additional dependencies to Docker, you must copy the <code>pyproject.toml</code> and <code>uv.lock</code> files to the Docker image.
To do this, add the following to your Langflow application&#x27;s Dockerfile:</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>COPY pyproject.toml uv.lock /app/</span></div></div><br></code></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="docker-env">Environment variables<a href="#docker-env" class="hash-link" aria-label="Direct link to Environment variables" title="Direct link to Environment variables" translate="no"></a></h3>
<p>The <code>docker.env</code> file is a <code>.env</code> file loaded into your Docker image.
It contains <a class="" href="/environment-variables">Langflow environment variables</a> that are used in flows or control Langflow&#x27;s behavior, such as authentication, database storage, API keys, and server configurations.
For example:</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>LANGFLOW_AUTO_LOGIN=True</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>LANGFLOW_SAVE_DB_IN_CONFIG_DIR=True</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>LANGFLOW_BASE_URL=http://0.0.0.0:7860</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>OPENAI_API_KEY=sk-...</span></div></div><br></code></div></div>
<p>You can set environment variables in the Dockerfile as well.
However, if you set an environment variable in both <code>docker.env</code> and the Dockerfile, Langflow uses the value set in <code>docker.env</code>.</p>
<p>Langflow can also <a class="" href="/configuration-global-variables#add-custom-global-variables-from-the-environment">create global variables from your environment variables</a>, or <a class="" href="/configuration-global-variables#use-environment-variables-for-missing-global-variables">use environment variables as a backup for missing global variables</a>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="secrets">Secrets<a href="#secrets" class="hash-link" aria-label="Direct link to Secrets" title="Direct link to Secrets" translate="no"></a></h3>
<p>For simplicity, the examples in the Langflow documentation might use direct references to API keys and other sensitive values.
In your own applications, you should always follow industry best practices for managing secrets, such as using environment variables or secret management tools.</p>
<p>For information about generating authentication keys and managing secrets in Langflow, see <a class="" href="/api-keys-and-authentication">API keys and authentication</a>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="storage">Storage<a href="#storage" class="hash-link" aria-label="Direct link to Storage" title="Direct link to Storage" translate="no"></a></h3>
<p>By default, Langflow uses an <a href="https://www.sqlite.org/" target="_blank" rel="noopener noreferrer" class="">SQLite</a> database for storage.
If you prefer to use PostgreSQL, see <a class="" href="/configuration-custom-database">Configure an external PostgreSQL database</a>.</p>
<p>For more information about storage, including cache and memory, see <a class="" href="/memory">Memory management options</a>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="flows">Flows<a href="#flows" class="hash-link" aria-label="Direct link to Flows" title="Direct link to Flows" translate="no"></a></h3>
<p>Your local Langflow instance might have many flows for different applications.
When you package Langflow as a dependency of an application, you only want to include the flows your application uses.</p>
<ol>
<li class="">
<p><a class="" href="/concepts-flows-import">Export flows</a> that are relevant to your application.</p>
<p>If you have chained flows (flows that trigger other flows), make sure you export <em>all</em> necessary flows.</p>
</li>
<li class="">
<p>Add the exported Langflow JSON files to the <code>/flows</code> folder in your application directory.</p>
</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="components">Components<a href="#components" class="hash-link" aria-label="Direct link to Components" title="Direct link to Components" translate="no"></a></h3>
<p>The <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-component lf-inline-icon" aria-hidden="true" focusable="false" role="presentation"><path d="M15.536 11.293a1 1 0 0 0 0 1.414l2.376 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z"></path><path d="M2.297 11.293a1 1 0 0 0 0 1.414l2.377 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414L6.088 8.916a1 1 0 0 0-1.414 0z"></path><path d="M8.916 17.912a1 1 0 0 0 0 1.415l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.415l-2.377-2.376a1 1 0 0 0-1.414 0z"></path><path d="M8.916 4.674a1 1 0 0 0 0 1.414l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z"></path></svg> <strong>Core components</strong> and <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-blocks lf-inline-icon" aria-hidden="true" focusable="false" role="presentation"><rect width="7" height="7" x="14" y="3" rx="1"></rect><path d="M10 21V8a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1H3"></path></svg> <strong>Bundles</strong> that you see in the Langflow visual editor are automatically included in the base Langflow Docker image.</p>
<p>If you have <a class="" href="/components-custom-components">custom components</a> for your application, include them in your application directory.
Custom components must be placed inside category folders, not directly in the base directory:</p>
<ol>
<li class="">
<p>Create a <code>/components</code> folder in your application directory.</p>
</li>
<li class="">
<p>Inside <code>/components</code>, create category subfolders (for example, <code>/components/data</code>, <code>/components/tools</code>).</p>
</li>
<li class="">
<p>Add your custom component files to the appropriate category folders.</p>
</li>
<li class="">
<p>Copy the <code>/components</code> folder to your Docker image and set the <code>LANGFLOW_COMPONENTS_PATH</code> environment variable:</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>COPY components /app/components</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>ENV LANGFLOW_COMPONENTS_PATH=/app/components</span></div></div><br></code></div></div>
</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="dockerfile">Langflow Dockerfile<a href="#dockerfile" class="hash-link" aria-label="Direct link to Langflow Dockerfile" title="Direct link to Langflow Dockerfile" translate="no"></a></h2>
<p>The Dockerfile determines how your Langflow image is built, including the dependencies, flows, components, and configuration files.</p>
<p>At minimum, you need to specify the base Langflow image, create the necessary folders in the container, copy folders and files to the container, and provide a startup command.</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span># Use the latest version of the base Langflow image</span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span>FROM langflowai/langflow:latest</span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span># Create folders and set the working directory in the container</span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span>RUN mkdir /app/flows</span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span>RUN mkdir /app/langflow-config-dir</span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span>WORKDIR /app</span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span># Copy flows, langflow-config-dir, and docker.env to the container</span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span>COPY flows /app/flows</span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span>COPY langflow-config-dir /app/langflow-config-dir</span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span>COPY docker.env /app/.env</span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span># Optional: Copy custom components to the container</span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span>COPY components /app/components</span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span># Optional: Use custom dependencies</span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span>COPY pyproject.toml uv.lock /app/</span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span># Set environment variables if not set in docker.env</span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span>ENV PYTHONPATH=/app</span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span>ENV LANGFLOW_LOAD_FLOWS_PATH=/app/flows</span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span>ENV LANGFLOW_CONFIG_DIR=/app/langflow-config-dir</span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span>ENV LANGFLOW_COMPONENTS_PATH=/app/components</span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span>ENV LANGFLOW_LOG_ENV=container</span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span># Command to run the Langflow server on port 7860</span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span>EXPOSE 7860</span></div></div><div><span class="ch-code-line-number">_<!-- -->29</span><div style="display:inline-block;margin-left:16px"><span>CMD [&quot;langflow&quot;, &quot;run&quot;, &quot;--backend-only&quot;, &quot;--env-file&quot;,&quot;/app/.env&quot;,&quot;--host&quot;, &quot;0.0.0.0&quot;, &quot;--port&quot;, &quot;7860&quot;]</span></div></div><br></code></div></div>
<p>The environment variables set directly in this Dockerfile specify resource paths for Langflow.
If these variables are also set in <code>docker.env</code>, the values in <code>docker.env</code> override the values set in the Dockerfile.</p>
<p>In this example, <code>ENV LANGFLOW_LOG_ENV=container</code> sets the logging behavior for serialized JSON to <code>stdout</code> to track the application&#x27;s behavior in a containerized environment. For more information, see <a class="" href="/logging">Logging</a>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="backend-only-mode">Backend-only mode<a href="#backend-only-mode" class="hash-link" aria-label="Direct link to Backend-only mode" title="Direct link to Backend-only mode" translate="no"></a></h3>
<p>The <code>--backend-only</code> flag in <code>CMD</code> starts Langflow in backend-only mode, which provides programmatic access only.
This is recommended when running Langflow as a dependency of an application where you don&#x27;t need access to the visual editor.</p>
<p>If you want to serve the Langflow visual editor <em>and</em> backend, then omit <code>--backend-only</code>.</p>
<p>For more information, see <a class="" href="/deployment-docker">Deploy Langflow on Docker</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="test-your-langflow-docker-image">Test your Langflow Docker image<a href="#test-your-langflow-docker-image" class="hash-link" aria-label="Direct link to Test your Langflow Docker image" title="Direct link to Test your Langflow Docker image" translate="no"></a></h2>
<p>Build and run your Langflow Docker image to test it.</p>
<p>This example runs the container locally.
For information about publishing your image on Docker Hub and running a Langflow container remotely, see <a href="#deploy-docker" class="">Deploy to Docker Hub and Kubernetes</a>.</p>
<ol>
<li class="">
<p>Build the Docker image:</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>docker build -t langflow-pokedex:1.2.0 .</span></div></div><br></code></div></div>
</li>
<li class="">
<p>Run the Docker container to start your Langflow server:</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>docker run -p 7860:7860 langflow-pokedex:1.2.0</span></div></div><br></code></div></div>
</li>
<li class="">
<p>To confirm that the container is serving your flows as expected, use the Langflow API to run a flow:</p>
<ol>
<li class="">
<p>Open one of the JSON files in your application&#x27;s <code>/flows</code> folder, and then find the flow&#x27;s <code>id</code> in the <a class="" href="/concepts-flows-import#additional-metadata-and-project-information">additional metadata and project information</a>.</p>
<p>There are many <code>id</code> values; make sure you get the ID for the entire flow, not the ID for an individual component.
If your flow is complex, try searching for the flow&#x27;s name, which is typically near the flow&#x27;s <code>id</code>.</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>&quot;name&quot;: &quot;Basic Prompting&quot;,</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>&quot;description&quot;: &quot;Perform basic prompting with an OpenAI model.&quot;,</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>&quot;id&quot;: &quot;e4167236-938f-4aca-845b-21de3f399858&quot;,</span></div></div><br></code></div></div>
</li>
<li class="">
<p>Send a POST request to the <a class="" href="/api-flows-run#run-flow"><code>/v1/run/$FLOW_ID</code></a> endpoint using the flow ID from the previous step .</p>
<p>The following example runs a simple LLM chat flow that responds to a chat input string.
If necessary, modify the payload for your flow.
For example, if your flow doesn&#x27;t have a <strong>Chat Input</strong> component, you must modify the payload to provide the expected input for your flow.</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>curl --request POST \</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> --url &#x27;http://localhost:7860/api/v1/run/e4167236-938f-4aca-845b-21de3f399858?stream=true&#x27; \</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> --header &#x27;Content-Type: application/json&#x27; \</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> --data &#x27;{</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> &quot;input_value&quot;: &quot;Tell me about Charizard.&quot;,</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> &quot;output_type&quot;: &quot;chat&quot;,</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> &quot;input_type&quot;: &quot;chat&quot;,</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> &quot;session_id&quot;: &quot;charizard_test_request&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>}&#x27;</span></div></div><br></code></div></div>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>About this example</summary><div><div class="collapsibleContent_i85q"><p>This command runs the <strong>Pokédex</strong> template flow.
It provides chat input about a specific Pokémon, uses an optional custom <code>session_id</code>, and enables response streaming with <code>?stream=true</code>.</p><p>The default <a class="" href="/session-id">session ID</a> is the flow ID.
Custom session IDs can help isolate unique conversation threads to keep the LLM&#x27;s context clean, and they can help identify specific conversations in flow logs to make debugging easier.</p><p>This command uses response streaming because the Pokédex flow can return a large amount of text.
To use batching, set <code>?stream=false</code>.</p></div></div></details>
</li>
<li class="">
<p>Verify that the request succeeds and the response is valid, depending on the specific flow you ran.</p>
<p>This confirms that your Langflow Docker image is correctly configured and this flow is accessible through the Langflow API server that is hosted on the container.
When you build and test your entire application stack, your front-end application can use Langflow API requests to trigger the flows served by your Langflow container in the same way you manually tested the flow in the previous step.</p>
<p>This example triggered a flow by sending chat input to the <code>/v1/run/$FLOW_ID</code> endpoint.
For more examples of flow triggers, see <a class="" href="/webhook">Trigger flows with webhooks</a> and the tutorial to <a class="" href="/chat-with-files">Create a chatbot that can ingest files</a>.</p>
</li>
</ol>
</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="deploy-docker">Deploy to Docker Hub and Kubernetes<a href="#deploy-docker" class="hash-link" aria-label="Direct link to Deploy to Docker Hub and Kubernetes" title="Direct link to Deploy to Docker Hub and Kubernetes" translate="no"></a></h2>
<p>When you&#x27;re ready to share your application with the world, you need to serve Langflow in a production environment.
For more information about deploying Langflow, see the following:</p>
<ul>
<li class=""><a class="" href="/deployment-overview">Learn about Langflow deployments</a></li>
<li class=""><a class="" href="/deployment-docker">Deploy Langflow on Docker</a></li>
<li class=""><a class="" href="/deployment-kubernetes-prod">Deploy the Langflow production environment on Kubernetes</a></li>
</ul></div></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/next/deployment-nginx-ssl"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Deploy Langflow with Nginx and SSL</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/next/deployment-docker"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Langflow Docker images</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#directory-structure" class="table-of-contents__link toc-highlight">Directory structure</a><ul><li><a href="#package-management" class="table-of-contents__link toc-highlight">Package management</a></li><li><a href="#docker-env" class="table-of-contents__link toc-highlight">Environment variables</a></li><li><a href="#secrets" class="table-of-contents__link toc-highlight">Secrets</a></li><li><a href="#storage" class="table-of-contents__link toc-highlight">Storage</a></li><li><a href="#flows" class="table-of-contents__link toc-highlight">Flows</a></li><li><a href="#components" class="table-of-contents__link toc-highlight">Components</a></li></ul></li><li><a href="#dockerfile" class="table-of-contents__link toc-highlight">Langflow Dockerfile</a><ul><li><a href="#backend-only-mode" class="table-of-contents__link toc-highlight">Backend-only mode</a></li></ul></li><li><a href="#test-your-langflow-docker-image" class="table-of-contents__link toc-highlight">Test your Langflow Docker image</a></li><li><a href="#deploy-docker" class="table-of-contents__link toc-highlight">Deploy to Docker Hub and Kubernetes</a></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title"></div><ul class="footer__items clean-list"><li class="footer__item"><div class="footer-links">
<span>© 2026 Langflow</span>
<span id="preferenceCenterContainer"> ·&nbsp; <a href="#" onclick='return"undefined"!=typeof window&&window.truste&&window.truste.eu&&window.truste.eu.clickListener&&window.truste.eu.clickListener(),!1' style="cursor: pointer;">Manage Privacy Choices</a></span>
</div></li></ul></div></div></div></footer><div style="position:fixed;right:21px;bottom:21px;z-index:100;display:flex;align-items:center;gap:10px;cursor:pointer"><div style="background-color:#f6f6f6;border-radius:50%;width:48px;height:48px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px rgba(0,0,0,0.1)"><img src="/img/langflow-icon-black-transparent.svg" style="width:40px" alt="Search"></div></div></div>
</body>
</html>