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

在DigitalOcean/Docker环境构建应用时出现Redis启动错误

解决Redis容器启动端口冲突问题

我碰到过好多次这个问题,大概率是Redis要用到的端口被别的进程占了!给你几个一步步排查解决的办法:

1. 先确认端口被哪个进程占用

首先得搞清楚到底是哪个进程抢了Redis的端口。假设你的docker-compose里Redis映射的是默认的6379端口,执行下面的命令排查:

sudo lsof -i :6379
# 或者用netstat命令
sudo netstat -tulpn | grep :6379

如果输出里显示有其他进程(比如本地安装的Redis服务、或者别的第三方应用),那就是它占用了端口导致冲突。

2. 停止占用端口的进程

如果是本地Redis服务在后台运行,直接停掉就行:

# Ubuntu/Debian系统
sudo systemctl stop redis-server
sudo systemctl disable redis-server  # 可选:防止开机自动启动本地Redis

# CentOS/RHEL系统
sudo systemctl stop redis
sudo systemctl disable redis

要是是其他应用占用了端口,要么停掉该应用,要么修改它的运行端口。

3. 修改Docker Compose里的Redis端口映射

不想停掉其他进程的话,给Redis换个宿主机端口映射就行。比如把原来的6379:6379改成6380:6379,这样外部用6380访问,容器内部还是用默认的6379:

services:
  redis:
    image: redis:latest
    ports:
      - "6380:6379"  # 修改这里的宿主机端口
    # 其他配置项...

改完之后重新执行你的部署命令即可。

4. 清理Docker残留的无效端口绑定

有时候Docker的端口代理会出现异常,残留一些无效的绑定关系。可以试试重启Docker服务来修复:

sudo systemctl restart docker

重启完成后再重新执行构建部署命令,说不定就能正常启动了。

5. 检查防火墙与安全组设置

DigitalOcean的服务器自带控制台防火墙,同时服务器系统本身也可能有ufw这类防火墙工具,需要确保Redis用到的端口是开放的:

# 查看ufw防火墙规则
sudo ufw status
# 如果目标端口没开放,添加允许规则
sudo ufw allow 6379/tcp  # 换成你实际用的端口

另外记得去DigitalOcean的控制台,检查对应Droplet的防火墙规则,确保目标端口的入站流量是允许的。

小提示:每次部署前可以先检查容器状态,用docker ps -a看看有没有残留的Redis容器没清理干净,有的话先执行docker rm -f redis_1删掉再重新构建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:32:36