You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Docker中重启Weaviate且不会丢失已创建的Schema?

问题根因

Weaviate 默认将 Schema、向量索引、原始数据全部存储在容器内部的 /var/lib/weaviate 路径下。Docker 容器的文件系统默认是临时的,只要容器停止销毁、重启,没有持久化挂载的目录内的所有数据都会被清空,这是重启后 Schema 丢失的核心原因,和 Weaviate 本身的运行逻辑无关。

修复&永久避免数据丢失的操作步骤
  • 第一步:先停止当前运行的 Weaviate 容器
    执行命令:docker stop <你的Weaviate容器ID/容器名>
  • 第二步:在宿主机创建一个专门用于存储 Weaviate 数据的目录,比如:
    执行命令:mkdir -p /opt/weaviate/data
    你也可以自定义其他路径,确保当前操作用户有该目录的读写权限即可
  • 第三步:修改 Weaviate 启动配置,添加持久化卷挂载
    如果你是用docker run直接启动的,在原启动命令中添加-v /opt/weaviate/data:/var/lib/weaviate参数,示例命令如下:
    docker run -d -p 8080:8080 -p 50051:50051 \
      -v /opt/weaviate/data:/var/lib/weaviate \
      semitechnologies/weaviate:latest
    
    如果你是用docker-compose启动的,在weaviate服务的配置下添加volumes配置段,示例:
    services:
      weaviate:
        image: semitechnologies/weaviate:latest
        ports:
          - "8080:8080"
          - "50051:50051"
        volumes:
          - /opt/weaviate/data:/var/lib/weaviate
        environment:
          - QUERY_DEFAULTS_LIMIT=25
          - AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=true
          - PERSISTENCE_DATA_PATH=/var/lib/weaviate
          # 其他原有环境变量、Q&A模块配置保持不变
    
  • 第四步:重新启动 Weaviate 容器即可,后续无论重启容器、甚至删除容器重建,只要宿主机的/opt/weaviate/data目录不删除,Schema 和所有数据都不会丢失
注意事项
  • 如果你当前有需要保留的存量 Schema 和数据,先不要删除旧容器,先执行docker cp <容器ID>:/var/lib/weaviate /opt/weaviate/data把原有数据拷贝到宿主机,再按上面的步骤挂载启动,即可恢复原有数据
  • 确保PERSISTENCE_DATA_PATH环境变量的取值和你挂载到容器内的路径一致,默认就是/var/lib/weaviate,无需额外修改

内容的提问来源于stack exchange,提问作者Hars

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 12:06:07