尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

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

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/langflowPostgreSQL 数据用命名卷langflow-postgres挂到/var/lib/postgresql/data。仓库中的示例文件 docker_example/docker-compose.yml 用的是两个命名卷langflow-data和langflow-postgres写法等价关键同样是数据落在卷上。postgres:16-trixie是被固定到特定 Debian 基础镜像的写法文档说明这样做是为了避免postgres:16标签悄悄换掉操作系统、在已有卷上触发 glibc collation 不匹配警告。如果你沿用该标签保持一致即可。${LANGFLOW_SUPERUSER_PASSWORD}是 compose 文件的变量引用值来自同目录.env文件中定义的这个变量设为 Langflow 超级用户的强密码不是让你照抄字面量。如果你的数据目前只存在于容器可写层里先把数据迁移到卷上例如挂载卷后把现有数据拷入再执行下面的升级步骤。升级前备份数据库并记录当前状态镜像选择文档 把“换版本”和“换镜像 profile”都视为一次部署迁移给出的前置检查是清点生产 Flow 用到的组件确认目标镜像 profile 包含它们并显式测试自定义组件和 provider 集成记录当前镜像 digest、配置和持久卷布局并在启动新版本前备份数据库用生产数据的一份拷贝启动候选镜像做登录、Flow 加载、Flow 执行、文件访问和 provider 凭据的冒烟测试。如果你的部署使用长度小于 32 字符的LANGFLOW_SECRET_KEY1.11.x release notes 明确要求初次升级时保持该 key 不变否则已加密的凭据无法解密。执行升级换镜像标签并重启主路径是 Docker Compose。把 compose 文件里的image改成目标版本标签文档示例为langflowai/langflow:1.11.0按你要升到的版本替换然后docker compose pull docker compose up -ddocker 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_PASSWORDSUPERUSER_PASSWORD \ langflowai/langflow:1.11.0其中SUPERUSER_PASSWORD替换为你的强密码-v langflow-data:/app/langflow中的langflow-data要换成你现有部署实际使用的卷bind mount 或命名卷这一点不能改改了就意味着数据不随容器走了。关于标签选择镜像文档 建议生产部署固定版本标签versioned tag需要可复现时进一步固定 registry digestimage: langflowai/langflow:base-1.12.0sha256:IMAGE_DIGEST这种形式digest 由你按实际镜像替换而latest、base-latest、langflow-all:latest这类移动标签适合本地评估因为可能在不改配置的情况下选中新版本。另外注意镜像分 base / default / extended 三个 profile分别对应langflowai/langflow:base-*、langflowai/langflow:*、langflowai/langflow-all:*换 profile 等于改变组件清单换版本则可能触发启动时的数据库迁移两者都要按上面的迁移步骤处理。验证升级结果按文档给出的判断方式逐项确认浏览器访问http://localhost:7860/能正常登录并看到原有的 Flow——这是数据保留的直接体现在确认健康状态和组件可用性之前不要从仓库或部署平台删除旧镜像镜像文档的回滚前提。如果升级还涉及把 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_LOGINfalse必须在启动时设置LANGFLOW_SUPERUSER_PASSWORD可选LANGFLOW_SUPERUSER除非显式设LANGFLOW_AUTO_LOGINtrue旧的langflow/langflow默认凭据不再被接受打过补丁的 1.11 镜像把运行时HOME移到/app/data如果没设LANGFLOW_CONFIG_DIR默认配置目录从/opt/app-root/src/.cache/langflow变为/app/data/.cache/langflowSQLiteLANGFLOW_SAVE_DB_IN_CONFIG_DIRtrue时跟随该目录。因此升级前要么持久化/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),仅供参考
返回列表