Laravel启动器

laravel-docker-starter — Laravel 启动器模板

作者 Mominde92

一个基于 Docker Compose 的 Laravel 运行环境模板,包含 Nginx、PHP-FPM 8.4 和 MySQL 8.4,提供开发与生产两种镜像阶段及常用 Make 命令。

看看你的网站会是什么样

浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。

3 个预览视图
桌面端首页1 / 3
桌面端截图首屏预览

由服务器浏览器实际访问页面后截取。

全部页面与视图 3

截图用于了解视觉与布局,交互效果请以实际项目为准。

采集于 2026-10-14查看来源

值得关注的模板亮点

从已有项目资料中,快速了解它的特点。

01

多阶段 Dockerfile:dev 阶段从本机挂载代码,prod 阶段将代码与优化后的 autoloader 打入镜像并以 www-data 运行

02

docker-compose.yml 定义 app(PHP-FPM)、web(Nginx)和 db(MySQL,带健康检查,确保 PHP 在数据库就绪后启动)

03

Nginx 配置仅服务 public/ 目录,将 PHP 请求转给 PHP-FPM,并隐藏 .env、.git 等点文件

04

提供 Makefile 快捷命令:up、down、shell、migrate、test、logs、perms、prod-image 等

05

README 记录 CI 会验证首页返回 200、/.env 被阻止以及生产镜像可构建

模板详细介绍

该模板面向 Laravel 项目,提供一套可复用的 Docker Compose 配置。README 说明其包含多阶段 Dockerfile(dev 阶段挂载本机代码,prod 阶段将代码和优化后的 autoloader 打入镜像并以 www-data 运行)、docker-compose.yml(app 为 PHP-FPM、web 为 Nginx、db 为带健康检查的 MySQL,使 PHP 在数据库就绪后才启动)、Nginx 配置(仅服务 public/,将 PHP 请求转给 FPM,并隐藏 .env、.git 等点文件)、OPcache 配置以及 Makefile。

使用方式为将 Dockerfile、docker-compose.yml、.dockerignore、Makefile 和 docker/ 目录复制到已有 Laravel 项目中,在 .env 里配置数据库连接,然后运行 make install 完成构建、启动、composer install、key:generate 和 migrate,访问 http://localhost:8080。README 也列出了不使用 make 时的等价 docker compose 命令。

README 提到 CI 会在每次推送时创建全新 Laravel 应用、启动该栈、运行迁移,并验证首页通过 Nginx 返回 200、/.env 被阻止、生产镜像可构建。README 未提供关于该模板在其他框架、缓存驱动、队列、定时任务或 HTTPS 终止方面的说明。

Laravel启动器

适合你的项目吗?

适用场景

  • 为已有 Laravel 项目添加统一的本地 Docker 开发环境
  • 在团队多台机器和服务器上复现相同的 Nginx + PHP-FPM + MySQL 运行环境
  • 通过 make prod-image 构建用于部署的生产镜像
  • 在 CI 中启动该栈并运行迁移与首页可访问性检查

适合人群

  • 使用 Laravel 并希望通过 Docker Compose 管理本地开发环境的开发者
  • 需要 Nginx + PHP-FPM + MySQL 组合且希望有生产镜像构建步骤的团队
  • 愿意按 README 将模板文件复制进现有 Laravel 项目并手动配置 .env 的用户

上手与定制指南

结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。

  1. 1

    将 Dockerfile、docker-compose.yml、.dockerignore、Makefile 和 docker/ 目录复制到 Laravel 项目

  2. 2

    在 .env 中设置 DB_CONNECTION=mysql、DB_HOST=db、DB_PORT=3306、DB_DATABASE、DB_USERNAME、DB_PASSWORD

  3. 3

    运行 make install 完成构建、启动、composer install、key:generate 和 migrate,然后访问 http://localhost:8080

  4. 4

    DB_HOST 不能使用 127.0.0.1,应使用服务名 db;DB_USERNAME 不能为 root;storage/ 权限问题可运行 make perms;端口冲突可设置 APP_PORT

  5. 5

    生产部署时 README 建议在 CI 构建镜像并部署带标签的版本、避免将密钥写入镜像、启动时运行 config:cache route:cache view:cache、不发布 MySQL 端口并备份 dbdata 卷

查看仓库使用说明

授权与来源资料

使用条件与限制

免费使用 · 保留许可声明

本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。

使用时需要遵守

  • 允许免费使用、修改、商用和分发该版本代码。
  • 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
  • 代码按现状提供;担保与责任限制以原许可证及适用法律为准。

额外费用与待核对事项

  • 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
  • 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
查看原文依据

DeepSeek 根据仓库许可证和 README 整理 ·2026-10-14。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。

项目核对记录与介绍依据

模板资料

来源平台
GitHub
资料与维护参考分
资料较完整 · 80 / 100
技术栈
Laravel
网站类型
启动器
这个分数如何计算

本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。

这个项目需要核对什么

记录的仓库更新时间
2026-10-14
截图检查日期
2026-10-14

已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。

目录记录的主要技术栈是 Laravel。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。

查看具体选型方法 →

介绍的制作与核对状态

介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。

审核声明: codex-user-requested-batch-review-20261015 · 2026-10-15

查看当时使用的来源资料

SHA-256: 52b64f2178b39d3a4954a4c15a0c776982f44493d5a6949da5bbe6c69bbb29a0

2026-10-14T12:55:10.710Z

来源文件 / 仓库
# Laravel Docker Starter

[![CI](https://github.com/Mominde92/laravel-docker-starter/actions/workflows/ci.yml/badge.svg)](https://github.com/Mominde92/laravel-docker-starter/actions/workflows/ci.yml)
![PHP](https://img.shields.io/badge/PHP-8.4-777BB4?logo=php&logoColor=white)
![Nginx](https://img.shields.io/badge/Nginx-1.27-009639?logo=nginx&logoColor=white)
![MySQL](https://img.shields.io/badge/MySQL-8.4-4479A1?logo=mysql&logoColor=white)
![License](https://img.shields.io/badge/license-MIT-blue)

A small, production-minded Docker Compose setup for Laravel: **Nginx + PHP-FPM 8.4 + MySQL 8.4**.
Drop it into any Laravel project and get the same environment on every laptop and server.

Every push is tested in CI: a fresh Laravel app is created, the stack is started, migrations run,
the home page must answer `200` through Nginx, `/.env` must be blocked, and the production image must build.

## What you get

| File | Purpose |
|---|---|
| `Dockerfile` | Multi-stage image: `dev` (code mounted from your machine) and `prod` (code + optimized autoloader baked in, runs as `www-data`). |
| `docker-compose.yml` | `app` (PHP-FPM), `web` (Nginx) and `db` (MySQL with a healthcheck, so PHP starts only when the database is ready). |
| `docker/nginx/default.conf` | Serves `public/` only, passes PHP to FPM, hides dot-files such as `.env` and `.git`. |
| `docker/php/opcache.ini` | OPcache tuned for production images. |
| `Makefile` | Short commands for daily work. |

## Quick start

Copy `Dockerfile`, `docker-compose.yml`, `.dockerignore`, `Makefile` and the `docker/` folder into your Laravel project, then set the database in `.env`:

```env
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=secret
```

```bash
make install     # build, start, composer install, key:generate, migrate
```

Open http://localhost:8080. Without `make`:

```bash
docker compose up -d --build --wait
docker compose exec app composer install
docker compose exec app chown -R www-data:www-data storage bootstrap/cache
docker compose exec app php artisan key:generate
docker compose exec app php artisan migrate
```

## Daily commands

```bash
make up          # start
make down        # stop
make shell       # shell inside the PHP container
make migrate     # run migrations
make test        # php artisan test
make logs        # follow logs
```

## Things that trip people up

- **`DB_HOST=127.0.0.1` does not work.** Inside a container that address is the container itself. Use the service name `db`.
- **`DB_USERNAME` cannot be `root`.** The MySQL image creates `DB_USERNAME` as a normal user; the root password is `DB_ROOT_PASSWORD`.
- **"Permission denied" in `storage/`.** PHP-FPM runs as `www-data`; run `make perms` once.
- **Port 8080 is taken.** Set `APP_PORT=8081` in `.env`.

## Production

```bash
make prod-image   # docker build --target prod -t laravel-app:prod .
```

The `prod` stage installs dependencies without dev packages, copies the code into the image, optimizes the autoloader and drops root.
For a real deployment also:

- build the image in CI and deploy a tagged version, so servers run exactly what was tested;
- keep secrets out of the image (environment variables or Docker secrets, never a committed `.env`);
- run `php artisan config:cache route:cache view:cache` on start;
- do not publish the MySQL port, and back up the `dbdata` volume.

A step-by-step explanation of this setup is on my blog: [Dockerizing a Laravel app with Docker Compose](https://moumen-dev.com/blog/docker-compose-laravel/).

## Author

**Moamen Derine**, Senior Full Stack Developer & DevOps Engineer in Dubai.
[moumen-dev.com](https://moumen-dev.com) · [LinkedIn](https://www.linkedin.com/in/momin-derine/)

## License

[MIT](LICENSE)
反馈内容错误

看看同类模板

对比同技术栈与用途的模板,找到更适合的视觉与内容结构。