跳到主要内容

在 Docker 上部署 Langflow

本指南演示了如何使用 Docker 和 Docker Compose 部署 Langflow。

有三种可用选项

有关配置 Docker 镜像的更多信息,请参阅用您自己的代码定制 Langflow Docker 镜像

先决条件

快速入门

在您的系统上安装并运行 Docker 后,运行此命令

docker run -p 7860:7860 langflowai/langflow:latest

Langflow 现在可通过 http://localhost:7860/ 访问。

克隆仓库并构建 Langflow Docker 容器

  1. 克隆 Langflow 仓库

    git clone https://github.com/langflow-ai/langflow.git

  2. 导航到 docker_example 目录

    cd langflow/docker_example

  3. 运行 Docker Compose 文件

    docker compose up

Langflow 现在可通过 http://localhost:7860/ 访问。

配置 Docker 服务

Docker Compose 配置启动两个服务:langflowpostgres

要在容器启动时配置这些服务的值,请将它们包含在您的 .env 文件中。

一个示例 .env 文件可在项目仓库中找到。

要传递 .env 值,请在您的 docker run 命令中包含 --env-file 标志


_10
docker run -it --rm \
_10
-p 7860:7860 \
_10
--env-file .env \
_10
langflowai/langflow:latest

Langflow 服务

langflow 服务同时提供 Langflow Web 应用程序的后端 API 和前端 UI。

langflow 服务使用 langflowai/langflow:latest Docker 镜像并暴露端口 7860。它依赖于 postgres 服务。

环境变量

  • LANGFLOW_DATABASE_URL:PostgreSQL 数据库的连接字符串。
  • LANGFLOW_CONFIG_DIR:Langflow 存储日志、文件存储、监控数据和密钥的目录。

  • langflow-data:此卷被映射到容器中的 /app/langflow

PostgreSQL 服务

postgres 服务是一个数据库,用于存储 Langflow 的持久化数据,包括流程、用户和设置。

该服务运行在端口 5432 上,并包含一个专用于数据存储的卷。

postgres 服务使用 postgres:16 Docker 镜像。

环境变量

  • POSTGRES_USER:PostgreSQL 数据库的用户名。
  • POSTGRES_PASSWORD:PostgreSQL 数据库的密码。
  • POSTGRES_DB:PostgreSQL 数据库的名称。

  • langflow-postgres:此卷被映射到容器中的 /var/lib/postgresql/data

使用 Docker Compose 部署特定版本的 Langflow

如果您想部署特定版本的 Langflow,可以修改 Docker Compose 文件中 langflow 服务下的 image 字段。例如,要使用版本 1.0-alpha,将 langflowai/langflow:latest 更改为 langflowai/langflow:1.0-alpha

将您的流程打包为 Docker 镜像

您可以将 Langflow 流程包含在应用程序镜像中。构建镜像时,您保存的 .JSON 流程会被包含进去。这使您能够从容器中提供流程服务,将镜像推送到 Docker Hub,并在 Kubernetes 上进行部署。

示例流程可在 Langflow Helm Charts 仓库中找到,或者您可以提供自己的 JSON 文件。

  1. 创建项目目录

_10
mkdir langflow-custom && cd langflow-custom

  1. 下载示例流程或将您的流程 .JSON 文件包含在 langflow-custom 目录中。

_10
wget https://raw.githubusercontent.com/langflow-ai/langflow-helm-charts/refs/heads/main/examples/flows/basic-prompting-hello-world.json

  1. 创建 Dockerfile

_10
FROM langflowai/langflow-backend:latest
_10
RUN mkdir /app/flows
_10
COPY ./*json /app/flows/.
_10
ENV LANGFLOW_LOAD_FLOWS_PATH=/app/flows

COPY ./*json 命令将您当前目录中的所有 JSON 文件复制到 /flows 文件夹。

ENV LANGFLOW_LOAD_FLOWS_PATH=/app/flows 命令设置 Docker 容器内的环境变量。通过将其指向 /app/flows,您可以确保应用程序能够找到并利用在镜像构建过程中已复制到该目录中的 JSON 流程文件。

  1. 在本地构建并运行镜像。

_10
docker build -t myuser/langflow-hello-world:1.0.0 .
_10
docker run -p 7860:7860 myuser/langflow-hello-world:1.0.0

  1. 构建并将镜像推送到 Docker Hub。将 myuser 替换为您的 Docker Hub 用户名。

_10
docker build -t myuser/langflow-hello-world:1.0.0 .
_10
docker push myuser/langflow-hello-world:1.0.0

要使用 Helm 部署该镜像,请参阅在 Kubernetes 上部署 Langflow 生产环境

用您自己的代码定制 Langflow Docker 镜像

您可以通过添加自己的代码或修改现有组件来定制 Langflow Docker 镜像。

此示例 Dockerfile 演示了如何通过替换 astradb_graph.py 组件来定制 Langflow,但此模式可适用于任何其他组件或自定义代码。


_20
FROM langflowai/langflow:latest
_20
# Set working directory
_20
WORKDIR /app
_20
# Copy your modified astradb_graph.py file
_20
COPY src/backend/base/langflow/components/vectorstores/astradb_graph.py /tmp/astradb_graph.py
_20
# Find the site-packages directory where langflow is installed
_20
RUN python -c "import site; print(site.getsitepackages()[0])" > /tmp/site_packages.txt
_20
# Replace the file in the site-packages location
_20
RUN SITE_PACKAGES=$(cat /tmp/site_packages.txt) && \
_20
echo "Site packages at: $SITE_PACKAGES" && \
_20
mkdir -p "$SITE_PACKAGES/langflow/components/vectorstores" && \
_20
cp /tmp/astradb_graph.py "$SITE_PACKAGES/langflow/components/vectorstores/"
_20
# Clear Python cache in the site-packages directory only
_20
RUN SITE_PACKAGES=$(cat /tmp/site_packages.txt) && \
_20
find "$SITE_PACKAGES" -name "*.pyc" -delete && \
_20
find "$SITE_PACKAGES" -name "__pycache__" -type d -exec rm -rf {} +
_20
# Expose the default Langflow port
_20
EXPOSE 7860
_20
# Command to run Langflow
_20
CMD ["python", "-m", "langflow", "run", "--host", "0.0.0.0", "--port", "7860"]

要使用此自定义 Dockerfile,请执行以下操作

  1. 为您的自定义 Langflow 设置创建一个目录

_10
mkdir langflow-custom && cd langflow-custom

  1. 为您的自定义代码创建必要的目录结构。在此示例中,Langflow 期望 astradb_graph.py 存在于 /vectorstores 目录中,因此您在该位置创建一个目录。

_10
mkdir -p src/backend/base/langflow/components/vectorstores

  1. 将您修改后的 astradb_graph.py 文件放在 /vectorstores 目录中。

  2. 创建名为 Dockerfile 的新文件,位于您的 langflow-custom 目录中,然后将上面显示的 Dockerfile 内容复制到其中。

  3. 构建并运行镜像


_10
docker build -t myuser/langflow-custom:1.0.0 .
_10
docker run -p 7860:7860 myuser/langflow-custom:1.0.0

通过修改文件路径和组件名称,此方法可适用于您想添加到 Langflow 的任何其他组件或自定义代码。

Search