news 2026/9/9 22:16:26

Langflow 怎么在不丢数据库和 Flow 的情况下升级 Docker 镜像?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Langflow 怎么在不丢数据库和 Flow 的情况下升级 Docker 镜像?

Langflow 怎么在不丢数据库和 Flow 的情况下升级 Docker 镜像?

【免费下载链接】langflowLangflow is a powerful tool for building and deploying AI-powered agents and workflows.项目地址: https://gitcode.com/GitHub_Trending/la/langflow

如果你的 Langflow 跑在 Docker 里,想升到更新版本,又担心数据库和已保存的 Flow 被重置,那么官方给出的原则只有一条:让数据留在持久卷上,升级时只替换容器镜像。Docker 部署文档中的 “Upgrade the Langflow Docker image” 一节描述的就是这条路径:数据通过 Docker 卷或 bind mount 持久化在容器之外,升级后同一个卷会被重新挂回,数据库和 Flow 得以保留。

下面按“确认持久化 → 备份 → 换标签重启 → 验证 → 必要时回滚”的顺序操作。

前提:确认数据已经在持久卷上

先看你的docker-compose.yml。Langflow 数据目录和 PostgreSQL 数据目录都必须挂在卷上,不能留在容器层。文档给出的升级示例是:

services: langflow: image: langflowai/langflow:1.11.0 environment: - LANGFLOW_CONFIG_DIR=/app/langflow - LANGFLOW_SUPERUSER_PASSWORD=${LANGFLOW_SUPERUSER_PASSWORD} volumes: - ./langflow-data:/app/langflow postgres: image: postgres:16-trixie volumes: - langflow-postgres:/var/lib/postgresql/data volumes: langflow-postgres:

要点:

  • Langflow 数据用 bind mount(示例为宿主机./langflow-data到容器内/app/langflow),PostgreSQL 数据用命名卷(langflow-postgres挂到/var/lib/postgresql/data)。仓库中的示例文件 docker_example/docker-compose.yml 用的是两个命名卷langflow-datalangflow-postgres,写法等价,关键同样是数据落在卷上。
  • postgres:16-trixie是被固定到特定 Debian 基础镜像的写法,文档说明这样做是为了避免postgres:16标签悄悄换掉操作系统、在已有卷上触发 glibc collation 不匹配警告。如果你沿用该标签,保持一致即可。
  • ${LANGFLOW_SUPERUSER_PASSWORD}是 compose 文件的变量引用,值来自同目录.env文件中定义的这个变量(设为 Langflow 超级用户的强密码),不是让你照抄字面量。

如果你的数据目前只存在于容器可写层里,先把数据迁移到卷上(例如挂载卷后把现有数据拷入),再执行下面的升级步骤。

升级前:备份数据库并记录当前状态

镜像选择文档 把“换版本”和“换镜像 profile”都视为一次部署迁移,给出的前置检查是:

  1. 清点生产 Flow 用到的组件,确认目标镜像 profile 包含它们,并显式测试自定义组件和 provider 集成;
  2. 记录当前镜像 digest、配置和持久卷布局,并在启动新版本前备份数据库
  3. 用生产数据的一份拷贝启动候选镜像,做登录、Flow 加载、Flow 执行、文件访问和 provider 凭据的冒烟测试。

如果你的部署使用长度小于 32 字符的LANGFLOW_SECRET_KEY,1.11.x release notes 明确要求初次升级时保持该 key 不变,否则已加密的凭据无法解密。

执行升级:换镜像标签并重启

主路径是 Docker Compose。把 compose 文件里的image改成目标版本标签(文档示例为langflowai/langflow:1.11.0,按你要升到的版本替换),然后:

docker compose pull docker compose up -d

docker compose up -d会用新镜像重建 langflow 容器并重新挂回原有卷。文档说明升级后“同一个卷会被重新挂回,数据库和 Flow 得以保留”,这就是不丢数据的机制:被替换的只是镜像,不是卷。

如果你是用docker run裸跑的,对应做法是先拉新镜像:

docker pull langflowai/langflow:1.11.0

然后用与原来相同的卷挂载和新标签重启容器,例如:

docker run -p 7860:7860 \ -v langflow-data:/app/langflow \ -e LANGFLOW_SUPERUSER_PASSWORD=SUPERUSER_PASSWORD \ langflowai/langflow:1.11.0

其中SUPERUSER_PASSWORD替换为你的强密码;-v langflow-data:/app/langflow中的langflow-data要换成你现有部署实际使用的卷(bind mount 或命名卷),这一点不能改,改了就意味着数据不随容器走了。

关于标签选择:镜像文档 建议生产部署固定版本标签(versioned tag),需要可复现时进一步固定 registry digest(image: langflowai/langflow:base-1.12.0@sha256:IMAGE_DIGEST这种形式,digest 由你按实际镜像替换),而latestbase-latestlangflow-all:latest这类移动标签适合本地评估,因为可能在不改配置的情况下选中新版本。另外注意镜像分 base / default / extended 三个 profile(分别对应langflowai/langflow:base-*langflowai/langflow:*langflowai/langflow-all:*),换 profile 等于改变组件清单,换版本则可能触发启动时的数据库迁移,两者都要按上面的迁移步骤处理。

验证升级结果

按文档给出的判断方式逐项确认:

  1. 浏览器访问http://localhost:7860/,能正常登录并看到原有的 Flow——这是数据保留的直接体现;
  2. 在确认健康状态和组件可用性之前,不要从仓库或部署平台删除旧镜像(镜像文档的回滚前提)。

如果升级还涉及把 default/extended profile 换成 base,只有当没有任何已保存 Flow 依赖被移除的扩展时才是安全的,这一点文档明确列为限制。

出问题时怎么回滚

回滚策略同样来自镜像文档,前提是你在升级前保留了旧版本固定镜像和数据库备份:

  • 同一 Langflow 版本内只换了 profile:用未变更的持久数据和之前记录的 digest 重新部署旧镜像即可;
  • 跨版本升级且新版本已跑过数据库迁移:停止候选容器,恢复升级前的数据库备份,再重新部署旧 digest;
  • 不要在未经文档明确支持的情况下,让旧版本应用直接连被新版本迁移过的数据库。

可选分支:升级到自定义镜像

如果你需要的是基于某个 release 的派生镜像(文档举例是为 1.8.0 镜像补装uv,官方 1.8.0 起镜像不再自带uv/uvx,见 release notes),先基于官方镜像构建派生镜像,然后走上面完全相同的“换标签 → pull → 重启”流程,只把 compose 文件或docker run里的镜像指向你的自定义镜像。

升级到 1.11.x 时的额外注意点

1.11.x release notes 列了几项与 Docker 部署直接相关的变更:

  • 官方 Docker 镜像默认LANGFLOW_AUTO_LOGIN=false,必须在启动时设置LANGFLOW_SUPERUSER_PASSWORD(可选LANGFLOW_SUPERUSER),除非显式设LANGFLOW_AUTO_LOGIN=true;旧的langflow/langflow默认凭据不再被接受;
  • 打过补丁的 1.11 镜像把运行时HOME移到/app/data:如果没设LANGFLOW_CONFIG_DIR,默认配置目录从/opt/app-root/src/.cache/langflow变为/app/data/.cache/langflow,SQLite(LANGFLOW_SAVE_DB_IN_CONFIG_DIR=true时)跟随该目录。因此升级前要么持久化/app/data,要么把LANGFLOW_CONFIG_DIR指向你现有的数据目录,否则默认安装的数据会丢;
  • LANGFLOW_SECRET_KEY短于 32 字符时,初次升级保持 key 不变(见上文备份一节)。

完成上述步骤后,升级就是一次“换镜像、保留卷”的常规部署操作;数据是否保留取决于卷是否真的在容器之外,回滚能力取决于升级前的数据库备份和旧镜像是否还在。

【免费下载链接】langflowLangflow is a powerful tool for building and deploying AI-powered agents and workflows.项目地址: https://gitcode.com/GitHub_Trending/la/langflow

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/9 22:15:00

grblHAL:从8位到32位,运动控制固件的架构升级与实战解析

简介:面向嵌入式开发者和CNC爱好者的grblHAL源码包,是以grbl 1.1f为基础进行硬件抽象层改造的固件项目。它可运行于ESP32、STM32、Teensy 4、MSP432等常见三十二位处理器,解决了传统并行端口控制方案在新型单片机上移植与扩展困难的痛点。压缩…

作者头像 李华
网站建设 2026/9/9 22:14:53

基于STM32的DS18B20温度报警系统设计与实现

简介:面向嵌入式课程设计场景,这套资料以STM32F401微控制器和DS18B20数字温度传感器为核心,提供完整的温度报警系统方案,包含Keil5工程源码、Proteus仿真电路图和配套设计报告,适合高校相关专业学生作为课程设计、课设…

作者头像 李华
网站建设 2026/9/9 22:12:23

C++实现影像金字塔:图像重采样与插值算法实战解析

简介:一套面向遥感影像分析与计算机视觉开发者的C图像处理代码,以双线性内插算法为核心,对8位和24位Windows位图进行22模板重采样,并据此构造多分辨率影像金字塔,适用于图像缩放、目标检测与尺度空间分析等场景。压缩包…

作者头像 李华
网站建设 2026/9/9 22:11:49

基于TCP/IP的展厅智能中控系统搭建实践

简介:这套基于TCP/IP的展厅智能中控软件,主要面向展厅、展项及多媒体环境的中控系统集成人员,可解决多设备统一控制、界面快速配置等问题。软件采用所见即所得的拖拽式编辑,无需编程即可完成界面布局;UI素材集中在user…

作者头像 李华