使用默认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实现:
- 在项目根目录创建
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 }
- 修改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
相关产品推荐
相关产品推荐

