核心是用单个docker-compose.yml集成app、webserver、mysql、redis四服务及自定义网络,通过镜像、端口映射、数据卷、环境变量和depends_on实现自动联网通信与持久化。

用 Docker Compose 安装 Laravel,核心是把 PHP 运行环境(app)、Web 服务(Nginx)、数据库(MySQL)和缓存(Redis)四个角色写进一个 docker-compose.yml 文件里,让它们自动拉起、联网、挂载、通信。
基础结构:4个服务+1个网络
一个最小可用的 Laravel 环境至少包含:
- app:基于 PHP-FPM 的 Laravel 应用容器,负责执行 PHP 代码
- webserver:Nginx 容器,接收 HTTP 请求并转发给 app
- mysql:MySQL 容器,提供数据库服务
- redis:Redis 容器,用于缓存或队列
- 共用一个自定义桥接网络(如
laravel-network),确保容器间能用服务名互相访问
关键配置项不能漏
每个服务要明确几件事:
-
镜像来源:比如
nginx:alpine、mysql:8.0、redis:7.2-alpine -
端口映射:如
"8000:80"把宿主机 8000 映射到 Nginx 的 80 端口 -
数据卷挂载:Laravel 代码挂载进 app 和 Nginx 容器(
./:/var/www),MySQL 数据目录挂载到宿主机(./mysql:/var/lib/mysql)保证重启不丢数据 -
环境变量:在 app 容器中设置
DB_HOST=mysql和REDIS_HOST=redis,Laravel 就能通过服务名连上对应服务 -
启动依赖:用
depends_on告诉 Docker 先启动 mysql 和 redis,再启 app;Nginx 再最后启(它要等 app 就绪)
配套文件也要准备到位
Docker Compose 只管“调度”,Laravel 要跑起来还得有这些支持文件:
- Dockerfile(放在项目根目录):定义如何构建 app 镜像,安装扩展(pdo_mysql、gd、bcmath 等)、复制代码、设置工作目录
-
.env(项目根目录):填好
DB_HOST=mysql、REDIS_HOST=redis,其他如APP_KEY可用php artisan key:generate在容器内生成 -
nginx 配置文件(如
./nginx/conf.d/app.conf):指定 root、index、PHP-FPM 地址(fastcgi_pass app:9000)
启动和验证很简单
全部写好后,在项目目录运行:
-
docker-compose up -d后台启动所有服务 -
docker-compose ps查看状态,确认都是Up - 浏览器打开
http://localhost:8000,看到 Laravel 欢迎页即成功 - 进 app 容器执行
php artisan tinker或php artisan migrate验证数据库连通性


















