如何在另一台电脑上正常运行Laravel Sail Docker容器
问题核心原因
vendor目录默认被Laravel项目的.gitignore规则排除,不会提交到版本仓库,所以不管你怎么同步docker-compose、devcontainer配置,新机器拉取的代码里本来就不会有这个目录和里面的依赖文件。- 直接执行
docker compose up报错的本质是:Sail的启动入口vendor/bin/sail本身就是composer依赖安装后才会生成的文件,第一次启动前宿主机没有这个入口,自然无法正常拉起容器。 - 你在1号机生成的devcontainer配置仅定义了开发容器的基础环境参数,默认不会自动执行依赖安装步骤,所以同步到2号机后依然缺少vendor目录,无法启动。
零本地PHP依赖的正确操作流程
全程不需要在2号机安装PHP、Composer,所有操作都通过Docker容器完成,完全符合容器化使用逻辑:
- 进入拉取到本地的项目根目录,执行以下命令,通过临时的Composer容器安装所有项目依赖,命令会自动将当前项目目录挂载到容器内,依赖会直接下载到本地项目的vendor目录中:
docker run --rm \ -u "$(id -u):$(id -g)" \ -v "$(pwd):/var/www/html" \ -w /var/www/html \ laravelsail/php81-composer:latest \ composer install --ignore-platform-reqs
注意:镜像tag中的
php81需要替换为你项目实际使用的PHP版本,例如使用PHP 8.2时改为php82-composer,和docker-compose配置中Sail服务指定的PHP版本保持一致即可。Windows WSL2环境下请在WSL终端的项目路径下执行该命令,不要在Windows原生CMD/PowerShell里跑,避免权限问题。
- 等命令执行完成后,项目目录下会生成完整的
vendor文件夹和vendor/bin/sail启动脚本,此时直接执行Sail启动命令即可正常拉起所有容器:
./vendor/bin/sail up -d
- 容器正常启动后,再通过VSCode的Remote-Containers功能附加到正在运行的Laravel容器即可进行开发,所有PHP运行环境、扩展、命令都在容器内提供,宿主机不需要安装任何PHP相关程序。
devcontainer自动配置优化
如果希望后续新环境拉取代码后,直接通过VSCode打开远程容器就能自动完成所有配置,不需要手动执行临时容器安装依赖,可以修改项目下的.devcontainer/devcontainer.json文件,添加postCreateCommand配置:
{ "postCreateCommand": "composer install --ignore-platform-reqs", // 保留原有其他devcontainer配置,例如服务挂载、VSCode插件预装、端口转发等规则即可 }
添加该配置后,新环境第一次用VSCode打开项目远程容器时,会自动在容器内部完成composer依赖安装,不需要额外手动操作,启动后即可直接使用。
内容的提问来源于stack exchange,提问作者pancake
相关产品推荐
相关产品推荐

