您好,登錄后才能下訂單哦!
這篇文章給大家介紹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連接數據庫報錯
解決辦法
修改redis.conf文件第69行,把 bind 127.0.0.1 改為 0.0.0.0
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服務就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。