直接用 dunglas/frankenphp 官方镜像部署 laravel 等 php 应用只需三步:挂载代码、配置域名、确保依赖就位;它内置 caddy 和 frankenphp,无需手动配 nginx/fpm/路由;最简命令 docker run -p 8080:8080 dunglas/frankenphp 可快速验证环境。

直接用 dunglas/frankenphp 官方镜像部署 Laravel 或其他 PHP 应用,核心就三件事:挂载代码、配好域名、确保依赖就位。它不是传统 PHP 容器,不需要你装 Nginx、配 FPM、手写路由规则——Caddy 和 FrankenPHP 已深度集成,开箱即用。
最简启动命令(验证环境)
适合快速验证镜像是否正常工作:
docker run -p 8080:8080 dunglas/frankenphp- 该命令启动内置 demo,访问
http://localhost:8080显示 “Hello, FrankenPHP!” - 不挂载任何目录时,它用自带的
index.php,不会报错或空白 - 如需后台运行,加
-d;想指定容器名,加--name myapp
Laravel 项目挂载运行(开发/测试常用)
把现有 Laravel 项目跑起来,无需改代码,只需正确挂载和端口映射:
- 确保宿主机当前目录是 Laravel 项目根目录(含
public/、.env、vendor/) - 执行:
docker run -p 80:80 -p 443:443 -p 443:443/udp -v $PWD:/app dunglas/frankenphp -
/app是镜像内默认工作路径,Caddyfile 默认root public/并启用php_server - HTTPS 自动生效:首次访问
https://localhost会触发 Caddy 本地签发证书(接受浏览器警告即可) -
注意:
vendor/必须已在宿主机存在,不能靠容器内执行composer install
生产环境必备配置要点
上线前必须调整几项,否则证书失效、性能受限或服务中断:
-
SERVER_NAME 必须设为真实域名(如
example.com),不能是localhost或 IP,否则 Let’s Encrypt 申请失败 -
必须持久化 Caddy 数据卷:
-v caddy_data:/data,否则每次重启都重新申请证书,很快触发 ACME 限速 -
敏感文件不挂载:只挂载
public/和.env,避免storage/logs、.env.example暴露 -
推荐加健康检查与自动重启:
--health-cmd="curl -f http://localhost/health || exit 1" --restart=unless-stopped
扩展安装与依赖管理
官方镜像已预装常用扩展(PDO、cURL、OpenSSL 等),但按需补充也很简单:
- 进入运行中容器:
docker exec -it your-container-name bash - 执行:
install-php-extensions opcache mbstring zip - 装完建议重启容器,确保扩展加载状态一致
-
Composer 依赖必须在宿主机或构建阶段完成:镜像不含
git、unzip,也不预装 Composer,vendor/缺失会导致 Class not found
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











