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

如何通过Docker Compose在Redis容器启动时执行redis-cli命令

Redis Stack容器自动创建搜索索引的正确姿势

你当前配置的问题

  1. 完全替换了Redis的启动命令:你在Compose里用command指定执行脚本,导致容器根本没启动Redis服务,直接跑脚本了,这肯定连不上Redis。
  2. 脚本本身一堆语法问题:
    • 没加#!/bin/sh开头,容器不知道用什么来跑这个脚本
    • TAG" 多写了一个引号,语法直接报错
    • 末尾的EOF没头没尾,属于无效内容
  3. 脚本大概率没执行权限:本地挂载进去的脚本默认可能没可执行权限,容器跑不起来

修复后的完整方案

第一步:改好你的索引脚本

把./redis_folder/index-create.sh改成这样:

#!/bin/sh
# 别用固定sleep,等Redis真正就绪再操作
until redis-cli PING | grep -q "PONG"; do
  echo "等Redis启动..."
  sleep 1
done

# 创建索引,修正了引号问题
redis-cli FT.CREATE myIndex ON HASH PREFIX 1 studentPrefixProject SCHEMA studentName TAG SEPARATOR "|"

第二步:调整Docker Compose配置

别替换默认启动命令,而是让容器先启动Redis,再执行脚本,配置改成:

version: "3.9"
services:
  redis-db:
    container_name: container_name 
    image: "redis/redis-stack"
    volumes:
      - ./redis_folder/index-create.sh:/usr/local/etc/redis/index-create.sh
    ports:
      - "6379:6379"
    # 先启动Redis后台运行,执行脚本,最后保持容器不退出
    command: >
      sh -c "
      redis-server --daemonize yes &&
      /usr/local/etc/redis/index-create.sh &&
      tail -f /dev/null
      "

第三步:给脚本加执行权限

在本地终端跑这个命令:

chmod +x ./redis_folder/index-create.sh

验证是否成功

启动容器后,跑这个命令检查索引:

docker exec container_name redis-cli FT.INFO myIndex

能看到索引的详细信息就说明成了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 18:52:14