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

Docker环境下Laravel通过Mailhog发邮件失败:主机解析错误求助

Laravel + Docker Mailhog 邮件发送失败问题解决

问题场景

在Docker环境中尝试通过Mailhog发送Laravel邮件时,出现域名解析失败错误,无法建立邮件连接。

相关配置

.env 配置

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:p5lGXZTf7OB8BwTkbRBiBxoVn0yOO06tSyP/iChZJGA=
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=lara
DB_USERNAME=root
DB_PASSWORD=root

BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DISK=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

MEMCACHED_HOST=127.0.0.1

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_HOST=
PUSHER_PORT=443
PUSHER_SCHEME=https
PUSHER_APP_CLUSTER=mt1

VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
VITE_PUSHER_HOST="${PUSHER_HOST}"
VITE_PUSHER_PORT="${PUSHER_PORT}"
VITE_PUSHER_SCHEME="${PUSHER_SCHEME}"
VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

Docker Compose 配置片段

mailhog:
  image: mailhog/mailhog
  ports:
    - 1025:1025
    - 8025:8025

错误信息

Connection could not be established with host "mailhog:1025": stream_socket_client(): php_network_getaddresses: getaddrinfo for mailhog failed: Temporary failure in name resolution

解决方案

  • 确保容器处于同一网络
    Docker容器之间通过主机名通信的前提是在同一个自定义网络中,默认default网络也可使用,但显式配置更清晰:

    1. 修改Docker Compose,为Laravel应用和Mailhog添加共同网络:
      version: '3'
      networks:
        app-net:
          driver: bridge
      
      services:
        # 此处添加你的Laravel应用服务(如php-fpm/nginx)
        laravel-app:
          # ... 原有配置
          networks:
            - app-net
        mailhog:
          image: mailhog/mailhog
          ports:
            - 1025:1025
            - 8025:8025
          networks:
            - app-net
      
    2. 重启容器使配置生效:
      docker-compose down && docker-compose up -d
      
  • 替换MAIL_HOST为可访问IP
    如果暂时不想调整网络,可将.env中的MAIL_HOST改为以下任一值:

    • Mailhog容器的直接IP:通过docker inspect mailhog | grep -A 2 "IPAddress"命令获取后填入
    • 宿主机的Docker网关IP(通常为172.17.0.1,不同系统可能有差异)
      修改后示例:
    MAIL_HOST=172.17.0.1
    
  • 清理Laravel配置缓存
    修改.env后必须清除配置缓存,否则Laravel会沿用旧配置:

    php artisan config:clear
    php artisan cache:clear
    

内容的提问来源于stack exchange,提问作者salaheddine el jettioui

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:53:11