在 Docker 上部署 Langflow
在 Docker 容器中运行应用程序可以确保在不同系统上的一致性表现,并消除依赖冲突。
您可以使用 Langflow Docker 镜像来启动一个 Langflow 容器。
本指南演示了使用 Docker 和 Docker Compose 部署 Langflow 的几种方法:
- 快速入门:使用默认值启动 Langflow 容器。
- 使用 Docker Compose:克隆 Langflow 仓库,然后使用 Docker Compose 构建 Langflow Docker 容器。 此选项提供对配置的更多控制,包括持久的 PostgreSQL 数据库服务,同时仍使用基础 Langflow Docker 镜像。
- 创建自定义流程镜像:使用 Dockerfile 将流程打包为 Docker 镜像。
- 创建自定义 Langflow 镜像:使用 Dockerfile 打包自定义 Langflow Docker 镜像,包含您自己的代码、自定义依赖项或其他修改。
快速入门:使用默认值启动 Langflow 容器
在您的系统上安装并运行 Docker 后,执行以下命令:
_10docker run -p 7860:7860 langflowai/langflow:latest
然后,通过 http://localhost:7860/
访问 Langflow。
此容器运行带有默认设置的预构建 Docker 镜像。 要获得更多配置控制,请参阅 克隆仓库并运行 Langflow Docker 容器。
克隆仓库并运行 Langflow Docker 容器
克隆 Langflow 仓库并使用 Docker Compose 可以让您对配置有更多控制,允许您自定义环境变量,使用持久的 PostgreSQL 数据库服务(而不是默认的 SQLite 数据库),并包含自定义依赖项。
Docker Compose 的默认部署包括以下内容:
- Langflow 服务:运行使用 PostgreSQL 作为数据库的最新 Langflow 镜像。
- PostgreSQL 服务:为流程、用户和设置提供持久数据存储。
- 持久卷:确保您的数据在容器重启后仍然存在。
完整的 Docker Compose 配置可在 docker_example/docker-compose.yml
中找到。
-
克隆 Langflow 仓库:
_10git clone https://github.com/langflow-ai/langflow.git -
导航到
docker_example
目录:_10cd langflow/docker_example -
运行 Docker Compose 文件:
_10docker compose up -
通过
http://localhost:7860/
访问 Langflow。
自定义您的部署
您可以自定义 Docker Compose 配置以适应您的特定部署。
例如,要使用 .env
文件配置容器的数据库凭据,请执行以下操作:
-
在与
docker-compose.yml
相同的目录中创建一个包含数据库凭据的.env
文件:_10# Database credentials_10POSTGRES_USER=myuser_10POSTGRES_PASSWORD=mypassword_10POSTGRES_DB=langflow_10_10# Langflow configuration_10LANGFLOW_DATABASE_URL=postgresql://myuser:mypassword@postgres:5432/langflow_10LANGFLOW_CONFIG_DIR=/app/langflow -
修改
docker-compose.yml
文件,使其为langflow
和postgres
服务引用.env
文件:_10services:_10langflow:_10environment:_10- LANGFLOW_DATABASE_URL=${LANGFLOW_DATABASE_URL}_10- LANGFLOW_CONFIG_DIR=${LANGFLOW_CONFIG_DIR}_10postgres:_10environment:_10- POSTGRES_USER=${POSTGRES_USER}_10- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}_10- POSTGRES_DB=${POSTGRES_DB}
有关可用环境变量的完整列表,请参阅 Langflow 环境变量。
有关更多自定义选项,请参阅 使用您自己的代码自定义 Langflow Docker 镜像。
将您的流程打包为 Docker 镜像
本节向您展示如何创建一个 Dockerfile,该文件构建一个包含您的 Langflow 流程的 Docker 镜像。当您想要将特定流程作为独立容器分发或部署到 Kubernetes 等环境时,这种方法非常有用。
与使用预构建镜像的前几节不同,此方法会构建一个嵌入您流程的自定义镜像。
-
创建一个项目目录,并切换到该目录。
_10mkdir langflow-custom && cd langflow-custom -
将您流程的 JSON 文件添加到目录中。您可以下载示例,或使用您自己的文件:
_10# 下载示例流程_10wget https://raw.githubusercontent.com/langflow-ai/langflow-helm-charts/refs/heads/main/examples/flows/basic-prompting-hello-world.json_10_10# 或Replicate您自己的流程文件_10cp /path/to/your/flow.json . -
创建一个 Dockerfile 来构建您的自定义镜像:
_10FROM langflowai/langflow:latest_10RUN mkdir /app/flows_10COPY ./*.json /app/flows/_10ENV LANGFLOW_LOAD_FLOWS_PATH=/app/flows
此 Dockerfile 使用官方 Langflow 镜像作为基础,为您的流程创建一个目录 ,将您的 JSON 流程文件Replicate到该目录,并设置环境变量以告诉 Langflow 在哪里查找流程。
-
构建并测试您的自定义镜像:
_10docker build -t myuser/langflow-custom:1.0.0 ._10docker run -p 7860:7860 myuser/langflow-custom:1.0.0 -
将您的镜像推送到 Docker Hub(可选):
_10docker push myuser/langflow-custom:1.0.0
您的自定义镜像现在包含您的流程,可以在任何运行 Docker 的地方部署。对于 Kubernetes 部署,请参阅 在 Kubernetes 上部署 Langflow 生产环境。
使用您自己的代码自定义 Langflow Docker 镜像
虽然前一节展示了如何使用 Docker 镜像打包流程,但本节展示了如何自定义 Langflow 应用程序本身。当您需要添加自定义 Python 包或依赖项、修改 Langflow 的配置或设置、包含 自定义组件或工具,或添加您自己的代码来扩展 Langflow 的功能时,这非常有用。
本示例演示了如何自定义 Message History 组件,但相同的方法可用于任何代码修改。
_27FROM langflowai/langflow:latest_27_27# 设置工作目录_27WORKDIR /app_27_27# Replicate您修改的内存组件_27COPY src/backend/base/langflow/components/helpers/memory.py /tmp/memory.py_27_27# 查找安装了 langflow 的 site-packages 目录_27RUN python -c "import site; print(site.getsitepackages()[0])" > /tmp/site_packages.txt_27_27# 替换 site-packages 位置中的文件_27RUN SITE_PACKAGES=$(cat /tmp/site_packages.txt) && \_27 echo "Site packages at: $SITE_PACKAGES" && \_27 mkdir -p "$SITE_PACKAGES/langflow/components/helpers" && \_27 cp /tmp/memory.py "$SITE_PACKAGES/langflow/components/helpers/"_27_27# 仅清除 site-packages 目录中的 Python 缓存_27RUN SITE_PACKAGES=$(cat /tmp/site_packages.txt) && \_27 find "$SITE_PACKAGES" -name "*.pyc" -delete && \_27 find "$SITE_PACKAGES" -name "__pycache__" -type d -exec rm -rf {} +_27_27# 暴露默认的 Langflow 端口_27EXPOSE 7860_27_27# 运行 Langflow 的命令_27CMD ["python", "-m", "langflow", "run", "--host", "0.0.0.0", "--port", "7860"]
要使用此自定义 Dockerfile,请执行以下操作:
-
为您的自定义 Langflow 设置创建一个目录:
_10mkdir langflow-custom && cd langflow-custom -
为您的自定义代码创建必要的目录结构。 在此示例中,Langflow 期望
memory.py
存在于/helpers
目录中,因此您在该位置创建一个目录。_10mkdir -p src/backend/base/langflow/components/helpers -
将您修改的
memory.py
文件放在/helpers
目录中。 -
在您的
langflow-custom
目录中创建一个名为Dockerfile
的新文件,然后将上面显示的 Dockerfile 内容Replicate到其中。 -
构建并运行镜像:
_10docker build -t myuser/langflow-custom:1.0.0 ._10docker run -p 7860:7860 myuser/langflow-custom:1.0.0
通过修改文件路径和组件名称,此方法可以适用于您想要添加到 Langflow 的任何其他组件或自定义代码。