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

Docker容器间通信故障:app容器无法连接Redis容器

问题分析与解决步骤

1. 核心问题:App容器未加入指定网络

你的Docker Compose配置里,redis服务明确加入了my-net网络,但app服务没有配置networks字段——它会默认使用Docker Compose自动创建的默认网络,和redis不在同一个网络空间,自然没法通过redis:6379访问。

修正后的Compose配置:

version: '2'
services:
  redis:
    image: redis:latest
    restart: always
    ports:
      - '6379:6379'
    networks:
     - my-net
    
    volumes: 
      - cache:/data
  app:
    image: console-app-demo
    depends_on:
    - redis
    networks:  # 新增:将app加入my-net网络
     - my-net

volumes:
  cache:
    driver: local

networks:
  my-net:

2. 补充:处理Redis启动延迟问题

depends_on仅保证app在redis之后启动,但不保证Redis服务已经完全就绪(比如Redis还在初始化),这时候连接也会失败。你可以:

  • 在连接字符串中添加abortConnect=false,让StackExchange.Redis自动重试连接:
    var redisOpstions = new RedisCacheOptions
    {
        Configuration = "redis:6379,abortConnect=false",  // 新增abortConnect=false
        InstanceName = "redis-1."
    };
    
  • 或者在C#代码中添加手动重试逻辑,确认Redis就绪后再建立连接。

3. 验证步骤

修改配置后,执行以下命令重启服务:

docker-compose down
docker-compose up --build

再检查两个容器是否在同一个网络:

docker inspect my-net | grep -E "Name|IPv4Address"

确认app和redis容器都出现在该网络的容器列表中即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 20:00:54