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

Laravel修改后Swoole不生效及Docker连接拒绝问题求助

一、Swoole服务重载替代重启的方案
  • 使用重载命令替代停启
    大部分Laravel-Swoole扩展都支持重载Worker进程的命令,直接执行:
    php artisan swoole:http reload
    这个命令会重启Worker进程保留Master进程,比完全停启服务更快,且能识别代码修改。

  • 开发环境开启自动重载
    在Swoole配置文件(通常是config/swoole_http.php)中添加监听配置,实现代码修改后自动重载:

return [
    // 其他配置...
    'reloadable' => true,
    'watch_files' => [
        base_path('app'),
        base_path('routes'),
        base_path('config'),
        // 按需添加需要监听的目录
    ],
];

注意:生产环境不建议开启自动重载,避免频繁重载影响服务稳定性。

二、Docker-compose启动后"Connection is refused"排查步骤
  • 确认容器运行状态
    执行docker-compose ps,检查目标容器状态是否为Up。如果是Exited,执行docker-compose logs <容器名称>查看启动报错信息。

  • 检查端口映射配置
    确保docker-compose.yml中正确映射了Swoole服务端口(默认9501),示例:

services:
  laravel-swoole:
    # 其他配置...
    ports:
      - "9501:9501" # 宿主机端口:容器内端口

如果宿主机9501端口被占用,可修改为9502:9501,访问时使用http://localhost:9502。

  • 验证容器内服务监听地址
    进入容器:docker-compose exec laravel-swoole bash,执行netstat -tulpn(若未安装,先执行apt-get install net-tools),确认Swoole服务监听的是0.0.0.0:9501而非127.0.0.1(后者仅容器内部可访问)。

  • 检查网络与防火墙
    如果是远程服务器,确认宿主机防火墙/云服务商安全组已开放映射的端口(如9501)。

  • 修正应用内服务连接配置
    若应用连接数据库、Redis等其他服务,配置文件中的主机名需使用Docker服务名而非localhost。例如数据库配置:

DB_HOST=mysql # 对应docker-compose.yml中的mysql服务名称
DB_PORT=3306

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:40:32