跳到主要内容

在 Docker 上部署 Langflow

在 Docker 容器中运行应用程序可以确保在不同系统上的一致性表现,并消除依赖冲突。

您可以使用 Langflow Docker 镜像来启动一个 Langflow 容器。

本指南演示了使用 DockerDocker Compose 部署 Langflow 的几种方法:

  • 快速入门:使用默认值启动 Langflow 容器。
  • 使用 Docker Compose:克隆 Langflow 仓库,然后使用 Docker Compose 构建 Langflow Docker 容器。 此选项提供对配置的更多控制,包括持久的 PostgreSQL 数据库服务,同时仍使用基础 Langflow Docker 镜像。
  • 创建自定义流程镜像:使用 Dockerfile 将流程打包为 Docker 镜像。
  • 创建自定义 Langflow 镜像:使用 Dockerfile 打包自定义 Langflow Docker 镜像,包含您自己的代码、自定义依赖项或其他修改。

快速入门:使用默认值启动 Langflow 容器

在您的系统上安装并运行 Docker 后,执行以下命令:


_10
docker 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 中找到。

  1. 克隆 Langflow 仓库:


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

  2. 导航到 docker_example 目录:


    _10
    cd langflow/docker_example

  3. 运行 Docker Compose 文件:


    _10
    docker compose up

  4. 通过 http://localhost:7860/ 访问 Langflow。

自定义您的部署

您可以自定义 Docker Compose 配置以适应您的特定部署。

例如,要使用 .env 文件配置容器的数据库凭据,请执行以下操作:

  1. 在与 docker-compose.yml 相同的目录中创建一个包含数据库凭据的 .env 文件:


    _10
    # Database credentials
    _10
    POSTGRES_USER=myuser
    _10
    POSTGRES_PASSWORD=mypassword
    _10
    POSTGRES_DB=langflow
    _10
    _10
    # Langflow configuration
    _10
    LANGFLOW_DATABASE_URL=postgresql://myuser:mypassword@postgres:5432/langflow
    _10
    LANGFLOW_CONFIG_DIR=/app/langflow

  2. 修改 docker-compose.yml 文件,使其为 langflowpostgres 服务引用 .env 文件:


    _10
    services:
    _10
    langflow:
    _10
    environment:
    _10
    - LANGFLOW_DATABASE_URL=${LANGFLOW_DATABASE_URL}
    _10
    - LANGFLOW_CONFIG_DIR=${LANGFLOW_CONFIG_DIR}
    _10
    postgres:
    _10
    environment:
    _10
    - POSTGRES_USER=${POSTGRES_USER}
    _10
    - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
    _10
    - POSTGRES_DB=${POSTGRES_DB}

有关可用环境变量的完整列表,请参阅 Langflow 环境变量

有关更多自定义选项,请参阅 使用您自己的代码自定义 Langflow Docker 镜像

将您的流程打包为 Docker 镜像

本节向您展示如何创建一个 Dockerfile,该文件构建一个包含您的 Langflow 流程的 Docker 镜像。当您想要将特定流程作为独立容器分发或部署到 Kubernetes 等环境时,这种方法非常有用。

与使用预构建镜像的前几节不同,此方法会构建一个嵌入您流程的自定义镜像。

  1. 创建一个项目目录,并切换到该目录。


    _10
    mkdir langflow-custom && cd langflow-custom

  2. 将您流程的 JSON 文件添加到目录中。您可以下载示例,或使用您自己的文件:


    _10
    # 下载示例流程
    _10
    wget https://raw.githubusercontent.com/langflow-ai/langflow-helm-charts/refs/heads/main/examples/flows/basic-prompting-hello-world.json
    _10
    _10
    # 或Replicate您自己的流程文件
    _10
    cp /path/to/your/flow.json .

  3. 创建一个 Dockerfile 来构建您的自定义镜像:


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

此 Dockerfile 使用官方 Langflow 镜像作为基础,为您的流程创建一个目录,将您的 JSON 流程文件Replicate到该目录,并设置环境变量以告诉 Langflow 在哪里查找流程。

  1. 构建并测试您的自定义镜像:


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

  2. 将您的镜像推送到 Docker Hub(可选):


    _10
    docker push myuser/langflow-custom:1.0.0

您的自定义镜像现在包含您的流程,可以在任何运行 Docker 的地方部署。对于 Kubernetes 部署,请参阅 在 Kubernetes 上部署 Langflow 生产环境

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

虽然前一节展示了如何使用 Docker 镜像打包流程,但本节展示了如何自定义 Langflow 应用程序本身。当您需要添加自定义 Python 包或依赖项、修改 Langflow 的配置或设置、包含自定义组件或工具,或添加您自己的代码来扩展 Langflow 的功能时,这非常有用。

本示例演示了如何自定义 Message History 组件,但相同的方法可用于任何代码修改。


_27
FROM langflowai/langflow:latest
_27
_27
# 设置工作目录
_27
WORKDIR /app
_27
_27
# Replicate您修改的内存组件
_27
COPY src/backend/base/langflow/components/helpers/memory.py /tmp/memory.py
_27
_27
# 查找安装了 langflow 的 site-packages 目录
_27
RUN python -c "import site; print(site.getsitepackages()[0])" > /tmp/site_packages.txt
_27
_27
# 替换 site-packages 位置中的文件
_27
RUN 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 缓存
_27
RUN 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 端口
_27
EXPOSE 7860
_27
_27
# 运行 Langflow 的命令
_27
CMD ["python", "-m", "langflow", "run", "--host", "0.0.0.0", "--port", "7860"]

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

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


    _10
    mkdir langflow-custom && cd langflow-custom

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


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

  3. 将您修改的 memory.py 文件放在 /helpers 目录中。

  4. 在您的 langflow-custom 目录中创建一个名为 Dockerfile 的新文件,然后将上面显示的 Dockerfile 内容Replicate到其中。

  5. 构建并运行镜像:


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

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

Search