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

Docker部署Drupal与Solr时Solr容器每次启动生成新卷如何解决

Solr 容器每次启动生成新卷的解决方案

该问题的核心原因是你没有为 Solr 服务显式绑定固定的命名卷,默认生成的匿名卷每次重启都会新建,导致卷数量堆积。你可以按照以下步骤修改配置:

1. 修改 docker-compose.yml 配置

打开项目根目录的 docker-compose.yml 文件,做两处调整:

  • 在文件顶层添加命名卷声明,自定义卷名比如 solr_data:
volumes:
  solr_data:
    # 若需要将数据存在宿主机指定路径,可取消下方注释修改路径
    # driver: local
    # driver_opts:
    #   type: none
    #   o: bind
    #   device: /home/你的用户名/local-solr-data
  • 找到 solr 服务的配置块,修改 volumes 字段,把原来的匿名卷挂载替换为绑定上面声明的命名卷:
services:
  solr:
    # 原有镜像、端口、环境变量等配置保持不变
    volumes:
      - solr_data:/var/solr
      # 原有其他挂载(比如自定义配置文件)保留即可

2. 历史数据迁移(可选)

如果之前的匿名卷里有需要保留的 Solr 索引数据,可按以下步骤迁移,不需要保留可直接跳过:

  • 执行 docker volume ls 找到你之前使用的 Solr 匿名卷 ID
  • 执行命令将旧卷数据复制到新的命名卷:
    docker run --rm -v 你查到的旧卷ID:/from -v solr_data:/to alpine cp -a /from/. /to/

3. 验证配置生效

  • 执行 docker compose down 停止现有容器(不要加 -v 参数,否则会删除已有的卷数据)
  • 执行 docker compose up -d 重新启动服务
  • 执行 docker volume ls 检查,不会再生成新的匿名卷,后续所有启动都会复用 solr_data 这个固定卷

注意事项

  • 启动容器时不要加 --renew-anon-volumes(简写 -V)参数,该参数会强制重新生成匿名卷
  • 如果你没有用 compose,而是直接用 docker run 命令启动,每次启动时指定同一个命名卷即可:
    docker run -d --name solr -v solr_data:/var/solr 你使用的solr镜像名

内容的提问来源于stack exchange,提问作者Gaetano de Roberto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 17:42:02