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


相关推荐: zabbix利用python脚本发送报警邮件的方法  如何在 React 中条件性地遍历数组并渲染元素  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  如何用VPS主机快速搭建个人网站?  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  如何在万网主机上快速搭建网站?  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  网站图片在线制作软件,怎么在图片上做链接?  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  Laravel怎么判断请求类型_Laravel Request isMethod用法  如何在建站之星网店版论坛获取技术支持?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  C语言设计一个闪闪的圣诞树  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  ,交易猫的商品怎么发布到网站上去?  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  郑州企业网站制作公司,郑州招聘网站有哪些?  如何在阿里云高效完成企业建站全流程?  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  如何获取PHP WAP自助建站系统源码?  Firefox Developer Edition开发者版本入口  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  b2c电商网站制作流程,b2c水平综合的电商平台?  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  Python自动化办公教程_ExcelWordPDF批量处理案例  Python正则表达式进阶教程_复杂匹配与分组替换解析  Laravel Fortify是什么,和Jetstream有什么关系  如何在万网自助建站平台快速创建网站?  创业网站制作流程,创业网站可靠吗?  如何在云主机快速搭建网站站点?  Laravel如何记录自定义日志?(Log频道配置)  如何基于云服务器快速搭建个人网站?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  详解vue.js组件化开发实践  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  C++时间戳转换成日期时间的步骤和示例代码  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  Laravel DB事务怎么使用_Laravel数据库事务回滚操作  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全