Laravel如何与Docker(Sail)协同开发?(环境搭建教程)

发布时间 - 2025-12-22 00:00:00    点击率:
Laravel Sail 是 Laravel 官方封装的 Docker Compose 工具,一键初始化、统一命令(如 sail up、sail artisan)、支持服务选配与配置微调,简化本地开发环境搭建与管理。

用 Laravel Sail 搭建本地开发环境非常简单,它本质是 Laravel 官方封装的一套 Docker Compose 脚本,帮你省去手动写 docker-compose.yml 和配置 Nginx/PHP/MySQL 的麻烦。

一键初始化 Sail 环境

新项目直接用 Laravel 安装器创建时带上 --dev 参数,会自动包含 Sail:

laravel new my-app --dev

已有项目则运行:

cd my-app && php artisan sail:install

执行后会生成 docker-compose.yml.env.example 中的 Sail 相关配置(如 DB_HOST=sail),并提示你选择需要的服务(MySQL、PostgreSQL、Redis、Meilisearch 等)。

启动与日常开发命令

Sail 提供了统一的 ./vendor/bin/sail 命令代理,所有操作都不需单独记 Docker 命令:

  • ./vendor/bin/sail up -d —— 后台启动容器
  • ./vendor/bin/sail artisan migrate —— 在 PHP 容器中运行 Artisan 命令
  • ./vendor/bin/sail php --version —— 进入 PHP 环境执行任意命令
  • ./vendor/bin/sail logs -f nginx —— 实时查看 Nginx 日志
  • ./vendor/bin/sail down —— 关闭全部服务

常见配置调整技巧

Sail 默认使用轻量级配置,适合开发。遇到实际需求可微调:

  • 修改端口:编辑 docker-compose.yml 中 nginx 的 ports,比如把 80:80 改成 8080:80,然后 sail down && sail up -d
  • 挂载自定义配置:比如想改 PHP 的 upload_max_filesize,在 docker-compose.ymlphp 服务里加 volumes:./php.ini:/usr/local/etc/php/conf.d/php.ini
  • 添加 Node.js 支持:Sail 默认不启 Node 容器,但你可以用 sail node -vsail npm run dev —— Sail 会自动在 PHP 容器里执行(PHP 镜像已预装 Node)

调试与问题排查要点

刚上手容易卡在几个地方:

  • 权限问题:Linux/macOS 下如果报 permission denied,检查 ./vendor/bin/sail 是否有执行权限:chmod +x ./vendor/bin/sail
  • 数据库连不上:确认 .envDB_HOST=sail(不是 localhost),且已运行 sail up -d 启动 MySQL
  • 前端资源不刷新:Vite / Mix 编译后默认输出到 public/build,确保 APP_URL=http://localhost 与访问地址一致,必要时清浏览器缓存或加版本参数
  • 文件变更监听失效:Docker Desktop for Mac/Windows 默认支持 inotify,Linux 用户需确认宿主机已启用 fs.inotify.max_user_watches=524288

基本上就这些。Sail 不是黑盒,它生成的 docker-compose.yml 完全可读可改;也不用怕 Docker,大多数时候你只和 sail 这个命令打交道。开发体验接近原生,又隔离了环境依赖。


# mysql  # php  # linux  # laravel  # redis  # js  # 前端  # node.js  # node  # docker  # vite  # nginx  # npm  # for  # 封装  # public 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么在Controller之外的地方验证数据  Linux系统运维自动化项目教程_Ansible批量管理实战  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  Android Socket接口实现即时通讯实例代码  Android滚轮选择时间控件使用详解  如何在Windows 2008云服务器安全搭建网站?  如何撰写建站申请书?关键要点有哪些?  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  如何在腾讯云免费申请建站?  如何在景安云服务器上绑定域名并配置虚拟主机?  Laravel如何处理文件下载请求?(Response示例)  Laravel怎么使用artisan命令缓存配置和视图  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  Python图片处理进阶教程_Pillow滤镜与图像增强  googleplay官方入口在哪里_Google Play官方商店快速入口指南  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  历史网站制作软件,华为如何找回被删除的网站?  javascript基于原型链的继承及call和apply函数用法分析  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  如何用PHP工具快速搭建高效网站?  如何在阿里云部署织梦网站?  如何快速搭建高效香港服务器网站?  高端企业智能建站程序:SEO优化与响应式模板定制开发  EditPlus中的正则表达式 实战(1)  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  如何在万网自助建站平台快速创建网站?  JS经典正则表达式笔试题汇总  Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲  个人摄影网站制作流程,摄影爱好者都去什么网站?  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  如何用wdcp快速搭建高效网站?  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  如何在建站宝盒中设置产品搜索功能?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  如何用景安虚拟主机手机版绑定域名建站?  Bootstrap整体框架之JavaScript插件架构  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  JavaScript如何实现类型判断_typeof和instanceof有什么区别  Laravel怎么实现验证码(Captcha)功能  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  如何在Windows环境下新建FTP站点并设置权限?  Laravel中的withCount方法怎么高效统计关联模型数量  如何快速建站并高效导出源代码?  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)