Laravel 5 Laravel Redis php_网络_getaddresses:getaddrinfo失败:名称或服务未知[tcp://redis:6379]

Laravel 5 Laravel Redis php_网络_getaddresses:getaddrinfo失败:名称或服务未知[tcp://redis:6379],laravel-5,redis,docker-container,Laravel 5,Redis,Docker Container,服务器抛出错误可能是由于站点流量过大或redis连接丢失。 但无法找到有助于解决此错误的原因 此外,由于以下错误,服务器在英国特定时间每天凌晨4点停止 因此,任何有关这方面的帮助都会有所帮助 Server : Digital Ocean Frontend : React JS Backend : laravel (5.8) Used spiritix/lada-cache library for mysql cashing to manage large amount of data. Appl

服务器抛出错误可能是由于站点流量过大或redis连接丢失。 但无法找到有助于解决此错误的原因

此外,由于以下错误,服务器在英国特定时间每天凌晨4点停止

因此,任何有关这方面的帮助都会有所帮助

Server : Digital Ocean
Frontend : React JS
Backend : laravel (5.8)
Used spiritix/lada-cache library for mysql cashing to manage large amount of data.
Application is running on Docker containers.
1) 错误:

production.ERROR:php\u network\u getaddresses:getaddrinfo失败:Name 或服务未知[tcp://redis:6379]{“异常”:“[对象] (Predis\Connection\ConnectionException(代码:0): php_网络_getaddresses:getaddrinfo失败:名称或服务不可用 已知的[tcp://redis:6379]在 /var/www/vendor/predis/predis/src/Connection/AbstractConnection.php:155)

2) 错误:-

Redis-加载Redis是在内存中加载数据集:

3) 错误:-

生产。错误:连接被拒绝[tcp://127.0.0.1:6379]

此错误也将停止服务器


我曾尝试在cron scheduler上重新启动docker down容器。但实际问题不在于docker容器,一些内部laravel软件包(如Predis | Ladacash)会抛出上述错误,无法找到确切的解决方案。

由于您使用的是docker,因此您不应再使用IP引用您的redis服务器(docker容器)(比如说127.0.0.1)。改用容器名称

1) 运行:
docker ps
列出所有容器,然后找到redis服务器,将
container name
列下的名称复制并粘贴到您的
.env
文件中作为主机

2) 确保应用程序容器和redis容器位于同一网络中:

docker network ls
docker network inspect <network_name>
docker网络
docker网络检查

有点不相关,因为这可能是导致此问题的许多原因,但在我的两个案例中,我通过以下方法解决了此问题:

  • 重新加载my.env:清除缓存:
    php artisan config:cache
    并将env文件重新加载到缓存:
    php artisan config:clear
  • 我的Docker Swarm节点上的Docker服务实际上停止了(本例中是一个工作者),因此重新启动我的节点/服务器重新启动了Docker,它重新启动了我的PHP-FPM容器,该容器已“损坏”,不再与我的Manager节点上的Redis容器通信

  • 对于临时解决方案,我添加了cron usign shell脚本来重新启动redis docker容器。如果我在.env中添加容器名称,它将停止运行的服务器。我必须使用0.0.0.0,容器名称或127.0.0.1无效