Docker Compose Host-local网络配置:如何实现Redis仅对本地主机可访问
配置调整方案
核心调整思路是修改Redis的端口绑定规则,仅监听宿主机本地回环地址,同时保留内部网络隔离逻辑,最终同时满足「公网无法访问Redis」「Docker容器内部可正常调用Redis」「宿主机开发环境可访问Redis」三个要求,完整配置如下:
version: "2.2" services: nginx: image: nginx ports: - 8080:80 networks: - frontend - backend redis: image: redis # 仅绑定宿主机本地回环地址,公网无法访问该端口 ports: - 127.0.0.1:6379:6379 networks: - backend networks: frontend: {} backend: internal: true
规则生效逻辑
- 公网访问限制:公网仅能触达frontend网络暴露的Nginx 8080端口,backend为内部隔离网络,公网无法直接访问该网络下的任何服务
- 容器内部调用:Nginx同时加入frontend和backend网络,可正常调用同属backend网络的Redis服务
- 宿主机访问权限:Redis端口绑定
127.0.0.1后,仅宿主机本地发起的请求可以访问6379端口,同局域网其他设备、公网均无法访问,完全满足本地开发调试需求
注:如果使用Docker Desktop(Mac/Windows版本),该配置无需额外调整,本地开发环境直接连接
127.0.0.1:6379即可正常访问Redis实例。
内容的提问来源于stack exchange,提问作者Adam Smith
相关产品推荐
相关产品推荐

