温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Docker容器如何实现使用redis服务

发布时间:2020-11-19 14:44:09 来源:亿速云 阅读:217 作者:Leah 栏目:开发技术

这篇文章给大家介绍Docker容器如何实现使用redis服务,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

具体实现

~ docker run --network host php56

补充说明

使用了 host 模式后,则表示宿主机与容器共享宿主机的 IP,端口. 如果不希望与宿主机共享,则不能使用这种方式

如果你的电脑是 Mac, 并且你的docker 版本大于18.03,则你可以在代码中使用 docker.for.mac.localhost 来连接宿主机上的服务.

//使用示例

//以连接 mongod 为例

$mongodb = new \MongoDB\Driver\Manager('mongodb://docker.for.mac.localhost/:27017');

Windows 跟 Linux 暂时还没有发现可以在桥接模式下可以通过特使字符来使用宿主机上服务的方法。

如果各位有好的方法,欢迎留言讨论。

补充知识:Docker无法连接宿主机数据库

redis

已经修改过为宿主机 ifconfig命令下 docker0的 172.17.0.1 连接地址,还是无法连接redis

docker中redis配置信息

 # redis配置信息
 REDIS_HOST = '172.17.0.1'
 REDIS_PORT = 6379
 LEVEL_NAME = logging.DEBUG

 # session配置
 SESSION_TYPE = 'redis' # 设置redis存储的类型
 SESSION_REDIS = StrictRedis(host=REDIS_HOST, port=REDIS_PORT) # 指定session存储的redis服务器
 SESSION_USE_SIGNER = True # 设置签名存储

不利用守护方式启动容器,可以看到redis、mysql连接数据库报错

Docker容器如何实现使用redis服务

解决办法

修改redis.conf文件第69行,把 bind 127.0.0.1 改为 0.0.0.0

Docker容器如何实现使用redis服务

redis恢复连接

mysql

class ProductConfig(Config):
 # 数据库配置信息
 SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:root@172.17.0.1:3306/information'
 SQLALCHEMY_TRACK_MODIFICATIONS = False
 SQLALCHEMY_COMMIT_ON_TEARDOWN = True # 每当改变数据内容之后,在视图函数结束的时候会自动提交

 DEBUG = False
 LEVEL_NAME = logging.ERROR

以权限用户root登录

选择mysql库

查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称)

改host值(以通配符%的内容增加主机/IP地址),当然也可以直接增加IP地址

刷新MySQL的系统权限相关表

MariaDB [(none)]> use mysql;
MariaDB [mysql]> SELECT user, host FROM mysql.user
MariaDB [mysql]> update user set host = '%' where user ='root' and host='localhost';
MariaDB [(mysql)]> flush privileges;

关于Docker容器如何实现使用redis服务就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI