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

使用docker-compose挂载本地目录为卷时Redis配置文件映射失败求助

Redis主从容器启动失败:配置文件映射错误排查与解决

问题场景

尝试通过docker-compose挂载项目根目录下的配置文件到Redis主从容器,分发配置文件。当前Redis服务配置如下:

# Redis redis-master/slave configurations
redis-master:
  container_name: "redis-master"
  image: redis/redis-stack:7.0.2-RC3
  networks:
    - redis
    - api
  command:
    - "redis-server /etc/master.conf"
  volumes:
    - ./redis/clustering/redis-master/master.conf:/etc/master.conf
    - ./redis_data/redis-master/:/data/

redis-slave-0:
  container_name: "redis-slave-0"
  image: redis/redis-stack:7.0.2-RC3
  networks:
    - redis
    - api
  command:
    - "redis-server /etc/slave.conf"
  volumes:
    - ./redis/clustering/redis-slave/slave.conf:/etc/slave.conf
    - ./redis_data/redis-slave-0/:/data/

redis-slave-1:
  container_name: "redis-slave-1"
  image: redis/redis-stack:7.0.2-RC3
  networks:
    - redis
    - api
  command:
    - "redis-server /etc/slave.conf"
  volumes:
    - ./redis/clustering/redis-slave/slave.conf:/etc/slave.conf
    - ./redis_data/redis-slave-1/:/data/

目录结构(docker-compose.yml与redis目录同级):

redis
├── clustering
│   ├── redis-master
│   │   └── master.conf
│   ├── redis-slave
│   │   └── slave.conf
│   └── sentinel
│       └── sentinel.conf
└── redis-reference.conf

4 directories, 4 files

启动时出现错误,核心报错信息:

ERROR: for redis-master  Cannot start service redis-master: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "redis-server /etc/master.conf": stat redis-server /etc/master.conf: no such file or directory: unknown

错误原因

根本问题出在command字段的写法上:

  • 当前配置把redis-server /etc/master.conf作为一个单独的数组元素,Docker会尝试查找名为redis-server /etc/master.conf的可执行文件,而非将redis-server作为命令、/etc/master.conf作为参数执行。
  • 配置文件的路径映射是正确的,错误提示里的“no such file or directory”指的是错误识别的命令,而非挂载的配置文件。

解决方法

修改每个Redis服务的command字段,采用以下两种正确写法之一即可:

方式1:拆分命令与参数为独立数组元素

redis-master:
  # 其他配置保持不变
  command:
    - "redis-server"
    - "/etc/master.conf"

redis-slave-0:
  # 其他配置保持不变
  command:
    - "redis-server"
    - "/etc/slave.conf"

redis-slave-1:
  # 其他配置保持不变
  command:
    - "redis-server"
    - "/etc/slave.conf"

方式2:使用单字符串形式

redis-master:
  # 其他配置保持不变
  command: "redis-server /etc/master.conf"

redis-slave-0:
  # 其他配置保持不变
  command: "redis-server /etc/slave.conf"

redis-slave-1:
  # 其他配置保持不变
  command: "redis-server /etc/slave.conf"

修改后重新执行docker-compose up -d,Redis服务即可正常启动,配置文件也会正确挂载。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 10:20:40