首页 > 解决方案 > PRedis/Laravel 无法在启动时解析主机 - [tcp://:6379]

问题描述

我在 Rancher 上的 Laravel/Redis docker 堆栈有问题。每次启动 Predis 时都会出现此错误

php_network_getaddresses: getaddrinfo failed: Name does not resolve [tcp://:6379]

Docker-compose.yml:

        服务:
      应用程序:
        图片:已编辑/服务内联网:${APP_VERSION}
        环境:
          - DB_MIGRATE=真
          - DB_CONNECTION=mysql
          - DB_HOST=${STAGING_DB_HOST}
          - DB_PORT=${STAGING_DB_PORT}
          - DB_DATABASE=${STAGING_DB_DATABASE}
          - DB_USERNAME=${STAGING_DB_USERNAME}
          - DB_PASSWORD=${STAGING_DB_PASSWORD}
          - REDIS_HOST=redis
          - REDIS_PORT=6379
          - JWT_TOKEN=${JWT_TOKEN}
          - APP_KEY=${STAGING_APP_KEY}
          - APP_URL=${INTRANET_URL}
          - AUTH_URL=${AUTH_URL}
          - AUDIT_URL=${AUDIT_URL}
          - BILLING_URL=${BILLING_URL}
          - BUSINESSES_URL=${BUSINESSES_URL}
          - GROUPS_URL=${GROUPS_URL}
          - MESSAGING_URL=${MESSAGING_URL}
          - PERMISSIONS_URL=${PERMISSIONS_URL}
          - UI_URL=${UI_URL}
          - USERS_URL=${USERS_URL}
        标签:
            io.rancher.scheduler.affinity:host_label: type=node
            io.rancher.scheduler.affinity:host_label: services=true
        取决于:
          - 雷迪斯
        命令:sh -c '/run/wait-for.sh redis:6379 --timeout=30 --strict -- /run/start.sh'
        链接:
          -redis:redis
      雷迪斯:
        图片:已编辑/services-redis:staging-latest
        命令:[“redis-server”,“--appendonly”,“yes”]
        卷:
          - Intranet-redis:/数据
        标签:
          io.rancher.scheduler.affinity:host_label: type=database
          io.rancher.scheduler.affinity:host_label: redis=true
        重启:总是
    卷:
      内网-redis:
        司机:本地

wait-for.sh 脚本运行良好,发现 redis 没问题。但似乎它在应用程序容器的 supervisord.conf 期间失败了

    [监督]
    日志文件=/var/log/supervisor/supervisord.log;监督日志文件
    logfile_maxbytes=50MB;旋转前日志文件的最大大小
    日志文件备份=10;备份的日志文件数
    日志级别=错误;信息、调试、警告、跟踪
    pidfile=/var/run/supervisord.pid ; pid文件位置
    节点=真;运行 supervisord NOT 作为守护进程
    minfds=1024 ; 启动文件描述符的数量
    minprocs=200 ; 进程描述符的数量
    用户=根;默认用户
    childlogdir=/var/log/supervisor/;子日志文件将存放在哪里

    [程序:php-fpm]
    命令=php-fpm7 -F
    stdout_logfile=/dev/stdout
    stdout_logfile_maxbytes=0
    stderr_logfile=/dev/stderr
    stderr_logfile_maxbytes=0
    自动重启=假
    开始重试=0

    [程序:nginx]
    命令=nginx -g '守护进程关闭;'
    stdout_logfile=/dev/stdout
    stdout_logfile_maxbytes=0
    stderr_logfile=/dev/stderr
    stderr_logfile_maxbytes=0
    自动重启=假
    开始重试=0

    [程序:laravel-worker]
    process_name=%(program_name)s_%(process_num)02d
    command=php /web/html/artisan queue:work --sleep=3 --tries=3
    自动启动=真
    自动重启=真
    用户=根
    numprocs=2
    重定向标准错误=真
    stdout_logfile=/dev/stdout
    stdout_logfile_maxbytes = 0
    stderr_logfile=/dev/stderr
    stderr_logfile_maxbytes=0

如果我通过 SSH 连接到容器中,我可以使用 redis-cli ping redis 服务器并且所有 DNS 解析都正确完成,这只是初始启动。

标签: laraveldockerredisrancherpredis

解决方案


推荐阅读