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

使用默认Compose.yaml时FrankenPHP+Laravel无法自动重载的问题求助

解决FrankenPHP代码变更后UI自动重载的问题

针对你使用的默认docker-compose配置,代码变更后无法自动重载的问题,可以通过以下两种实用方式解决:

方式一:启用FrankenPHP内置开发模式自动重载

修改docker-compose.yaml中的php服务配置,添加开发环境变量并指定监听目录:

services:
  php:
    image: dunglas/frankenphp
    # 保留原有注释、端口、重启策略配置
    environment:
      - FRANKENPHP_DEV=1
    command: frankenphp run --watch /app
    ports:
      - "80:80" # HTTP
      - "443:443" # HTTPS
      - "443:443/udp" # HTTP/3
    volumes:
      - ./:/app
      - caddy_data:/data
      - caddy_config:/config
    tty: true

FRANKENPHP_DEV=1会开启开发模式,--watch /app让FrankenPHP监听挂载的应用目录,一旦检测到文件修改,自动重载应用。

方式二:配置Caddy监听文件变化(自定义Caddyfile场景)

如果需要更灵活的监听规则,可以通过自定义Caddyfile实现:

  1. 在项目根目录创建Caddyfile,示例内容:
{
    auto_https off
}

:80 {
    root * /app/public
    php_fastcgi unix//run/php/php-fpm.sock
    file_server
    # 按需添加需要监听的文件类型或目录
    watch /app/*.php /app/*.html /app/assets/*.css /app/assets/*.js
}
  1. 修改docker-compose.yaml,将自定义Caddyfile挂载到容器内:
services:
  php:
    # 保留原有镜像、环境变量等配置
    volumes:
      - ./:/app
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data
      - caddy_config:/config
    # 保留其他端口、tty等配置

Caddy会自动监听指定文件的变化,触发配置和应用重载,实现UI自动更新。

注意事项

  • 确保项目根目录存在public目录(FrankenPHP默认Web根目录),如果你的Web根目录不同,需对应调整Caddyfile中的root指令。
  • 生产环境下建议关闭自动重载,避免不必要的性能损耗。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 21:46:04