什么是 Sail
Laravel Sail 是一款轻量的命令行工具,用于操作 Laravel 的 Docker 开发环境。 即便你不了解 Docker,也能搭建包含 PHP、MySQL、Redis 的 Laravel 应用。 Sail 的核心是位于项目根目录的compose.yaml 文件和 sail 脚本。
sail 脚本提供了便捷的 CLI,用来操作 compose.yaml 中定义的 Docker 容器。
Laravel Sail 可运行在 macOS、Linux 以及 Windows(通过 WSL2)。
Sail 是仅供本地开发使用的工具,不适用于生产环境。
生产环境请另行准备合适的 Docker / 云平台方案。
安装
在已有项目中安装
使用 Composer 安装该包。发布配置文件
执行 你可以在交互式提示中选择要使用的服务,例如 MySQL、Redis、Mailpit 等。
sail:install Artisan 命令。
该命令会向项目根目录发布 compose.yaml,并在 .env 中添加必要的环境变量。添加额外服务
要向已有的 Sail 安装添加服务,使用sail:add 命令。
使用 Devcontainer
若希望在 Devcontainer 中开发,请使用--devcontainer 选项。
配置
设置 Shell 别名
默认情况下你需要每次输入./vendor/bin/sail。
设置 shell 别名后就只需输入 sail 即可。
~/.zshrc 或 ~/.bashrc,然后重启 shell。
重新构建镜像
若要让镜像内的包保持最新,可重新构建。启动与停止
要启动compose.yaml 中定义的所有 Docker 容器,使用 up 命令。
stop 命令;若为前台启动,则可按 Ctrl + C。
启动流程
运行命令
使用 Sail 时,应用运行在 Docker 容器内。 PHP、Artisan、Composer、Node / NPM 等命令都需要通过sail 执行。
Laravel 官方文档中常见的
php artisan、composer、npm 命令,
在 Sail 环境下需要在前面加上 sail。PHP 命令
Composer 命令
Artisan 命令
Node / NPM 命令
容器 CLI(Shell)
也可以直接进入容器打开 Bash 会话。服务
以下是 Sail 提供的服务概览。可在安装时通过sail:install 进行选择。
MySQL
默认包含在compose.yaml 中。
数据通过 Docker Volume 持久化。首次启动时会自动创建两个数据库:一个供应用使用,另一个是 testing。
在 .env 中将 DB_HOST 设置为 mysql 即可让应用访问它。
3306。
Redis
在.env 中将 REDIS_HOST 设置为 redis 即可访问 Redis。
Valkey
若使用 Valkey 作为 Redis 的替代,将REDIS_HOST 设置为 valkey 即可。
Mailpit
用于捕获本地开发过程中的邮件发送,并在 Web UI 中预览。http://localhost:8025 访问 Mailpit 的 Web UI。
Meilisearch / Typesense
可以与 Laravel Scout 集成,体验全文搜索。- Meilisearch:
MEILISEARCH_HOST=http://meilisearch:7700 - Typesense:
TYPESENSE_HOST=typesense、TYPESENSE_PORT=8108等
RustFS(S3 兼容存储)
若生产环境计划使用 Amazon S3,可以在本地模拟 S3 兼容存储。运行测试
sail test 内部等同于 sail artisan test。默认会准备专用的 testing 数据库,不会影响开发数据。
Laravel Dusk
使用 Sail 时无需在本地安装 Selenium 就可运行 Dusk 浏览器测试。 请取消compose.yaml 中 Selenium 服务的注释。
PHP / Node 版本
更改 PHP 版本
修改compose.yaml 中 laravel.test 容器的 build.context。
追加 PHP 扩展
Sail 运行时镜像已包含常见 PHP 扩展。若应用需要额外扩展,可以在compose.yaml 中 laravel.test 服务里通过 PHP_EXTENSIONS 构建参数以空格分隔来指定,在构建镜像时一并安装。
compose.yaml 之后请重新构建镜像。
更改 Node 版本
分享站点
为了让同事预览或测试 Webhook,你可以临时将站点暴露到外部。laravel-sail.site URL。为了让 URL 生成辅助函数正常工作,请在 bootstrap/app.php 中配置信任代理。
Xdebug
启用
先通过sail:publish 发布配置文件,然后在 .env 中添加:
php.ini 文件包含以下配置:
CLI 调试
浏览器调试
在浏览器中启动调试会话的步骤请参阅 Xdebug 官方文档。 若使用 PhpStorm,Zero-configuration debugging 的设置很方便。自定义
要自定义 Sail 的 Dockerfile 或配置文件,请使用sail:publish 命令进行发布。
docker/ 目录下。
修改后请重新构建容器。
与生产环境的区别
Sail 与生产环境的主要差异如下:| 项目 | Sail(本地) | 生产环境 |
|---|---|---|
| 目的 | 开发与调试 | 提供服务 |
| Xdebug | 可启用 | 建议禁用 |
| Mailpit | 捕获邮件供预览 | 真实邮件服务器 |
| 数据持久化 | Docker Volume | 托管数据库等 |
| 性能 | 无优化 | 必须优化 |