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.yml 的 php 服务里加 volumes:./php.ini:/usr/local/etc/php/conf.d/php.ini
- 添加 Node.js 支持:Sail 默认不启 Node 容器,但你可以用 sail node -v 或 sail npm run dev —— Sail 会自动在 PHP 容器里执行(PHP 镜像已预装 Node)
调试与问题排查要点
刚上手容易卡在几个地方:
- 权限问题:Linux/macOS 下如果报 permission denied,检查 ./vendor/bin/sail 是否有执行权限:chmod +x ./vendor/bin/sail
- 数据库连不上:确认 .env 中 DB_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)协同开发?(环境搭建教程)


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