redis啟動(dòng)報(bào)錯(cuò)Can‘t?open?the?log?file:?No?such?file?or?directory
問(wèn)題描述
在使用docker-compose安裝redis的時(shí)候,啟動(dòng)失敗,提示無(wú)法開(kāi)發(fā)日志文件,這主要是容器中沒(méi)有對(duì)應(yīng)的日志文件造成的,另一點(diǎn)就是對(duì)應(yīng)的日志文件沒(méi)有相應(yīng)權(quán)限所導(dǎo)致
異常信息如下所示
*** FATAL CONFIG FILE ERROR ***
Reading the configuration file, at line 103
>>> 'logfile /var/log/redis/redis.log'
Can't open the log file: No such file or directory
原因分析
這個(gè)提示里面的/var/log/redis/redis.log日志文件指的是容器中的文件,千萬(wàn)別理解為宿主機(jī)中的路徑,如果你在宿主機(jī)創(chuàng)建此文件并授權(quán),最后結(jié)果也是一樣的,理解這一點(diǎn)很重要。
相關(guān)docker-compse.yml
配置如下
version: '3'
services:
redis:
hostname: redis
image: redis:latest
container_name: redis
restart: unless-stopped
command: redis-server /etc/redis.conf
environment:
- TZ=Asia/Shanghai # 時(shí)區(qū)設(shè)置
volumes:
- /etc/localtime:/etc/localtime:ro # 時(shí)區(qū)設(shè)置
- ./data:/data # redis 數(shù)據(jù)存儲(chǔ)目錄
- ./redis.conf:/etc/redis.conf # redis配置文件
ports:
- "6379:6379"
為了方面隨時(shí)修改redis配置,所以將配置文件進(jìn)行了映射
redis中日志文件的配置項(xiàng)如下:
# Specify the log file name. Also the empty string can be used to force # Redis to log on the standard output. Note that if you use standard # output for logging but daemonize, logs will be sent to /dev/null logfile "/var/log/redis/redis.log"
啟動(dòng)的時(shí)候就提示上述錯(cuò)誤了,要解決這個(gè)問(wèn)題有兩種方案
解決方案
方案一
直接將redis.conf中的logfile配置注釋掉或者設(shè)置為空就可以了,但是這樣就不會(huì)輸出日志了,如果有問(wèn)題需要排查就不方面了。
方案二
在宿主機(jī)的./data目錄下創(chuàng)建redis.log文件并授予權(quán)限,當(dāng)前redis安裝的絕對(duì)路徑為/home/local/docker/redis
以下都是指的相對(duì)路徑
touch data/redis.log chmod 777 data/redis.log 修改日志相關(guān)配置,這樣容器中就會(huì)自動(dòng)創(chuàng)建日志文件并授予權(quán)限了 logfile "/data/redis.log" 重新構(gòu)建并查看日志應(yīng)該都正常了 docker-compose up --build -d docker logs redis
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Redis實(shí)現(xiàn)延遲任務(wù)的常見(jiàn)方案詳解
延遲任務(wù)(Delayed?Task)是指在未來(lái)的某個(gè)時(shí)間點(diǎn),執(zhí)行相應(yīng)的任務(wù),本文為大家整理了Redis實(shí)現(xiàn)延遲任務(wù)的幾個(gè)常見(jiàn)方案,希望對(duì)大家有所幫助2024-04-04
Redis不同數(shù)據(jù)類(lèi)型的命令語(yǔ)句詳解
這篇文章主要介紹了Redis不同數(shù)據(jù)類(lèi)型的命令語(yǔ)句,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10
Redis 主從搭建的實(shí)現(xiàn)(同主機(jī)和跨節(jié)點(diǎn))
本文主要介紹了Redis 主從搭建的實(shí)現(xiàn),包括同主機(jī)和跨節(jié)點(diǎn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-09-09
Redis教程(十五):C語(yǔ)言連接操作代碼實(shí)例
這篇文章主要介紹了Redis教程(十五):C語(yǔ)言連接操作代碼實(shí)例,本篇博客是該系列博客中的最后一篇,在這里將給出基于Redis客戶端組件訪問(wèn)并操作Redis服務(wù)器的代碼示例,需要的朋友可以參考下2015-05-05
Redis實(shí)現(xiàn)開(kāi)機(jī)自啟腳本(linux)
本段文字主要介紹了在Linux系統(tǒng)中通過(guò)創(chuàng)建啟動(dòng)腳本和修改配置文件來(lái)實(shí)現(xiàn)Redis服務(wù)的開(kāi)機(jī)自啟動(dòng),并強(qiáng)調(diào)了使用chkconfig命令的重要性,通過(guò)本文,讀者可以掌握Redis服務(wù)在Linux系統(tǒng)中的安裝與配置方法2026-06-06
Redis AOF文件損壞報(bào)錯(cuò)的完整修復(fù)方案
文章提供了三種修復(fù)Redis AOF持久化文件損壞的方法,方法一:備份損壞文件,使用官方工具修復(fù);方法二:修改配置讓Redis忽略損壞的文件尾部;方法三:如果是Redis且混合AOF格式,使用相同修復(fù)命令,每種方法都有詳細(xì)步驟,確保修復(fù)后Redis可以正常啟動(dòng),需要的朋友可以參考下2026-04-04
Redis緩存與數(shù)據(jù)庫(kù)一致性的完整指南
某金融平臺(tái)因緩存數(shù)據(jù)不一致導(dǎo)致用戶余額錯(cuò)亂,損失千萬(wàn)!文中將用銀行對(duì)賬比喻+實(shí)戰(zhàn)代碼,揭秘6大解決方案,讓你的數(shù)據(jù)毫秒級(jí)同步,所以本文給大家詳細(xì)介紹了Redis緩存與數(shù)據(jù)庫(kù)一致性的完整指南,需要的朋友可以參考下2025-09-09

