vs简易新闻建设网站,上海废弃物备案网站,长沙seo优化推荐,苏州网站建设价格在微服务架构中#xff0c;Redis 是一种常见的高效缓存解决方案#xff0c;通常用于存储临时数据、会话信息或 token。如何在服务容器中高效、稳定地连接 Redis 是架构设计中的一个重要环节。
这篇博客将以实际项目为例#xff0c;详细介绍如何配置 Flask 应用中的服务容器…在微服务架构中Redis 是一种常见的高效缓存解决方案通常用于存储临时数据、会话信息或 token。如何在服务容器中高效、稳定地连接 Redis 是架构设计中的一个重要环节。
这篇博客将以实际项目为例详细介绍如何配置 Flask 应用中的服务容器连接宿主机上的 Redis 服务. 一、服务架构概述
通常我们的应用程序运行在容器中而 Redis 可以运行在宿主主机上或者单独的容器内。为了避免不必要的端口映射和复杂的网络配置以下介绍的是如何通过容器中的 Flask 应用连接宿主机上的 Redis 服务。
架构图可以简单地表示为 ----------------- ----------------- | | | | | Flask 容器 | --- | Redis 服务 (宿主机)| | | | | ----------------- -----------------
⚙️ 二、Redis 容器与 Flask 服务容器的网络配置
宿主机上 Redis 服务的配置
首先我们需要在宿主机上运行 Redis 并确保其对外开放接口允许来自容器的连接。 安装 Redis 如果尚未安装: sudo apt-get install redis-server2 配置 Redis 监听所有接口: 打开 Redis 的配置文件 /etc/redis/redis.conf确保 bind 选项设置为 0.0.0.0允许来自外部的连接
bind 0.0.0.0
并确保将 Redis 配置为带有密码保护
requirepass 123...
3.重启 Redis 服务:
sudo systemctl restart redis-server4.允许防火墙端口: 开放 Redis 的端口 6379确保 Flask 容器可以连接
sudo ufw allow 6379三、Flask 服务容器如何连接 Redis
当 Redis 在宿主主机上运行时Flask 容器需要通过宿主机的 IP 地址来连接到 Redis 服务。假设宿主机的 IP 地址为 172.29.11.11以下是如何在 Flask 应用中配置 Redis 连接。
1. Redis 连接配置
在 Flask 应用的代码中我们通过 redis.StrictRedis 来连接 Redis。
import redis# 配置 Redis 连接
redis_client redis.StrictRedis(host172.29.11.11, # 宿主机的 IP 地址port6379, # Redis 端口password123..., # Redis 的密码db0, # 默认数据库decode_responsesTrue, # 自动解码 Redis 响应socket_timeout5 # 设置超时时间
)2. Flask 容器的运行
假设你已经有了一个 Flask 服务的 Docker 容器运行该容器时的命令如下
docker run -d --name myapp -p 5000:5000 \-e REDIS_HOST172.29.11.11 \${{ secrets.DOCKER_HUB_USERNAME }}/myapp:${{ github.sha }}这个命令使用环境变量 REDIS_HOST 将 Redis 的宿主机 IP 地址注入到容器中。在 Flask 应用中你也可以通过读取这个环境变量来动态配置 Redis 连接。
import osredis_client redis.StrictRedis(hostos.getenv(REDIS_HOST, localhost), # 通过环境变量读取 Redis 地址port6379,password123...,db0,decode_responsesTrue,socket_timeout5
)总结从容器中连接宿主主机的最佳实践
网络配置确保宿主机的 Redis 监听所有接口 (0.0.0.0) 并开放了防火墙端口。连接方式使用宿主机的 IP 地址来连接 Redis而不是 localhost。安全性通过密码 (requirepass) 来确保 Redis 连接的安全性。