协同工作流概述
在多设备(如公司工作站与家用 PC)间同步 Laravel Sail 项目时,核心挑战在于依赖的引导与恢复。
由于 sail 命令行脚本位于 /vendor/bin 目录下,而 /vendor 目录通常被 Git 忽略。这导致在新设备拉取代码后,因缺少 vendor 目录而无法直接调用 sail 命令启动环境,进而无法安装依赖——这是一个典型的死锁问题。
本文将介绍标准化的多机协同方案,通过 Docker 临时容器完成依赖的 初始化引导 (Bootstrapping)。
1. 源代码提交
在首台设备(如初始化项目的机器)上,需确保 Git 忽略规则符合标准。Laravel 默认的 .gitignore 已包含 /vendor 与 .env,请遵循此规范,切勿将依赖包或敏感配置提交至版本控制系统。
1 | # 标准 Git 初始化流程 |
2. 新环境拉取与依赖引导
在第二台设备上,确保已部署好 WSL2 与 Docker Desktop 环境。
2.1 克隆代码
1 | mkdir -p ~/code && cd ~/code |
2.2 依赖引导
此时无法直接运行 sail up。我们需要通过 Docker 运行一个一次性的 PHP 容器来执行 composer install。
执行以下指令(Laravel 官方推荐方案):
1 | docker run --rm \ |
指令解析:
--rm: 容器执行完毕后自动删除,不残留垃圾。-u "$(id -u):$(id -g)": 使用当前宿主机用户 ID 运行容器内进程,确保生成的 vendor 文件权限正确(避免 root 权限问题)。-v "$(pwd):/var/www/html": 将当前项目目录挂载至容器。laravelsail/php82-composer: 使用包含 PHP 8.2 和 Composer 的专用镜像。
执行完毕后,宿主机目录下将生成标准的 vendor 目录,此时 sail 脚本已就位。
3. 环境配置与启动
3.1 配置文件初始化
复制环境变量模版文件。注意:生产环境密钥或特定基础设施配置(如 AWS Keys)需单独配置,不应包含在仓库中。
1 | cp .env.example .env |
3.2 启动容器栈
拥有 vendor 目录后,即可正常调用 Sail:
1 | # 启动环境 |
4. 验证与总结
访问 http://localhost 确认服务运行正常。
至此,我们建立了一套基于 Git + Docker Bootstrapping 的标准化工作流:
- 提交:仅提交业务代码与声明文件 (
composer.json,docker-compose.yml). - 拉取:在任意新设备获取代码。
- 引导:使用
docker run引导安装依赖。 - 启动:使用
sail up一键拉起完整环境。
这种工作流确保了,无论在哪台设备,只要有 Docker,就能 100% 复刻出完全一致的开发环境。