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
相关产品推荐
相关产品推荐

