You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Docker容器中自动运行Laravel队列Worker并解决Redis连接问题

Laravel队列服务Redis连接失败问题解决

问题场景

通过Docker Compose配置了app(PHP-FPM)和queue(队列Worker)两个服务,二者使用相同镜像与挂载卷,期望启动Compose后自动运行php artisan queue:work。但queue服务无法接收任务,手动进入容器执行命令时,日志中出现Redis连接失败错误:

[2024-09-04 19:40:48] local.ERROR: php_network_getaddresses: getaddrinfo for redis failed: Name or service not known {"exception":"[object] (RedisException(code: 0): php_network_getaddresses: getaddrinfo for redis failed: Name or service not known at /var/www/html/vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php:159)

.env文件中Redis配置为REDIS_HOST=redis,但在app容器中执行queue:work却能正常运行。

问题根源

queue服务未加入与app、Redis相同的laravel自定义网络。Docker容器默认仅加入默认网络,只有同属一个自定义网络的容器才能通过服务名(如redis)互相解析访问。

解决方案

1. 给queue服务添加网络配置

修改Docker Compose中queue服务的配置,加入laravel网络:

queue:
  build:
    context: php
  volumes:
    - ./laravel:/var/www/html
  command: ['/bin/sh', '-c', 'php artisan queue:work']
  depends_on:
    - redis
    - app
  networks:
    - laravel # 加入与app、Redis同个自定义网络

2. 确保Redis服务也在laravel网络中

检查Redis服务的配置,确认已加入laravel网络,示例配置:

redis:
  image: redis:alpine
  networks:
    - laravel

3. (可选)优化镜像复用

避免重复构建镜像,可在app服务中定义镜像名,queue服务直接复用:

services:
  app:
    build:
      context: php
    image: laravel-php:latest # 定义镜像标识
    container_name: laravel_app
    volumes:
      - ./laravel:/var/www/html
    networks:
      - laravel

  queue:
    image: laravel-php:latest # 复用已构建的镜像
    volumes:
      - ./laravel:/var/www/html
    command: ['/bin/sh', '-c', 'php artisan queue:work']
    depends_on:
      - redis
      - app
    networks:
      - laravel

4. (可选)添加Redis健康检查

确保Redis服务完全就绪后再启动queue服务,避免因Redis未启动完成导致的连接失败:

redis:
  image: redis:alpine
  networks:
    - laravel
  healthcheck:
    test: ["CMD", "redis-cli", "ping"]
    interval: 5s
    timeout: 3s
    retries: 3

queue:
  # ... 其他配置
  depends_on:
    redis:
      condition: service_healthy # 等待Redis健康检查通过
    app:
      condition: service_started

内容的提问来源于stack exchange,提问作者rayankb92

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 18:43:27