Laravel Sail 开发环境部署一把过(Git 同步与多机开发篇)

协同工作流概述

在多设备(如公司工作站与家用 PC)间同步 Laravel Sail 项目时,核心挑战在于依赖的引导与恢复
由于 sail 命令行脚本位于 /vendor/bin 目录下,而 /vendor 目录通常被 Git 忽略。这导致在新设备拉取代码后,因缺少 vendor 目录而无法直接调用 sail 命令启动环境,进而无法安装依赖——这是一个典型的死锁问题。

本文将介绍标准化的多机协同方案,通过 Docker 临时容器完成依赖的 初始化引导 (Bootstrapping)


1. 源代码提交

在首台设备(如初始化项目的机器)上,需确保 Git 忽略规则符合标准。Laravel 默认的 .gitignore 已包含 /vendor.env,请遵循此规范,切勿将依赖包或敏感配置提交至版本控制系统。

1
2
3
4
5
6
7
# 标准 Git 初始化流程
git init
git checkout -b main
git add .
git commit -m "feat: project init"
git remote add origin <repository_url>
git push -u origin main

2. 新环境拉取与依赖引导

在第二台设备上,确保已部署好 WSL2 与 Docker Desktop 环境。

2.1 克隆代码

1
2
3
mkdir -p ~/code && cd ~/code
git clone <repository_url> project-name
cd project-name

2.2 依赖引导

此时无法直接运行 sail up。我们需要通过 Docker 运行一个一次性的 PHP 容器来执行 composer install

执行以下指令(Laravel 官方推荐方案):

1
2
3
4
5
6
docker run --rm \
-u "$(id -u):$(id -g)" \
-v "$(pwd):/var/www/html" \
-w /var/www/html \
laravelsail/php82-composer:latest \
composer install --ignore-platform-reqs

指令解析

  • --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
2
3
4
5
6
7
8
# 启动环境
sail up -d

# 生成应用密钥
sail artisan key:generate

# 执行数据库迁移
sail artisan migrate

4. 验证与总结

访问 http://localhost 确认服务运行正常。

至此,我们建立了一套基于 Git + Docker Bootstrapping 的标准化工作流:

  1. 提交:仅提交业务代码与声明文件 (composer.json, docker-compose.yml).
  2. 拉取:在任意新设备获取代码。
  3. 引导:使用 docker run 引导安装依赖。
  4. 启动:使用 sail up 一键拉起完整环境。

这种工作流确保了,无论在哪台设备,只要有 Docker,就能 100% 复刻出完全一致的开发环境。