Laravel怎么使用Docker环境部署_Laravel Sail安装配置与容器化管理【方案】
发布时间 - 2026-01-03 00:00:00 点击率:次Laravel Sail 是 Laravel 9+ 默认集成的轻量级 Docker 开发方案,封装 Nginx、PHP-FPM、MySQL 等服务,自动处理依赖顺序与网络配置;需修正 docker-compose.yml 路径、.env 主机配置及时区,并在容器内执行 composer install;生产环境须导出并精简配置,不可直接使用 sail up -d。
直接用 Laravel Sail 部署 Docker 环境是目前最轻量、最贴近官方推荐的方案——它不是“可选工具”,而是 Laravel 9+ 默认集成的容器化入口,不需要手写 docker-compose.yml 就能跑起完整开发栈。
为什么不用自己写 docker-compose.yml?
Sail 的核心价值是把常见组合(Nginx + PHP-FPM + MySQL + Redis + MailHog + Selenium)封装成开箱即用的 CLI 工具,避免重复配置网络、卷映射、环境变量顺序等易错点。你自己写的 docker-compose.yml 很容易在 APP_SERVICE 和 php-fpm 容器间出现 socket 连接超时,或因 mysql 容器启动慢导致 Laravel 迁移失败。
-
sail up自动等待 MySQL 就绪后再启动应用服务 - 所有服务默认使用
sail网络,PHP 容器内访问mysql就是 DNS 名字,无需127.0.0.1或host.docker.internal -
.env中的DB_HOST=mysql、REDIS_HOST=redis是生效前提,不是占位符
安装 Sail 后必须改的三个地方
运行 composer require laravel/sail --dev 并执行 php artisan sail:ins 后,别急着
tallsail up。以下三处不改,90% 的人会卡在 502 或数据库连接拒绝:
- 检查
docker-compose.yml中build.context是否指向项目根目录(不是./vendor/laravel/sail/runtimes/8.2这类绝对路径) - 确认
.env里DB_HOST=mysql、REDIS_HOST=redis、MAIL_MAILER=smtp且MAIL_HOST=mailhog - PHP 容器内时区必须和宿主机一致,否则日志/队列时间错乱:在
docker-compose.yml的laravel.test服务下加environment块:environment: - APP_TIMEZONE=Asia/Shanghai - TZ=Asia/Shanghai
sail artisan 命令总提示 Class not found?
这是最常被忽略的权限与自动加载问题:Sail 的 sail artisan 实际在 laravel.test 容器里执行,但 vendor/autoload.php 如果由宿主机(比如 Mac M1)生成,可能含不兼容的扩展或缓存。解决方式不是重装依赖,而是强制容器内生成:
- 先
sail down停掉所有容器 - 删掉宿主机上的
vendor/和composer.lock - 运行
sail composer install—— 这一步会在 PHP 容器内执行,生成匹配容器架构的 autoloader - 再
sail up -d启动,sail artisan migrate就不会报Class 'App\\Models\\User' not found
生产环境别用 sail up -d
Sail 是为开发设计的:它默认暴露 8000 端口、启用 Xdebug、挂载整个项目目录为 volume、日志直写 stdout。上线时这些全是风险点。真正上生产应导出配置:sail artisan sail:publish,然后手动删掉 xdebug 扩展、注释 volumes 下的源码挂载、把 APP_ENV=production 写死进 docker-compose.yml 的 environment 块,并用 Nginx 反向代理替换 Sail 自带的简易服务器。否则你看到的 “Docker 部署” 其实只是本地开发镜像直接扔到云服务器上裸跑。
# mysql
# php
# laravel
# redis
# docker
# composer
# nginx
# app
# 云服务
# 端口
# 工具
# 架构
# 封装
# require
# 栈
# class
# internal
# 数据库
# 云服务器
# 容器内
# 会报
# 这是
# 就能
# 不需要
# 就不
# 会在
# 并在
# 你自己
# 很容易
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
简历没回改:利用AI润色让你的文字更专业
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
Laravel Session怎么存储_Laravel Session驱动配置详解
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
制作公司内部网站有哪些,内网如何建网站?
Laravel如何为API编写文档_Laravel API文档生成与维护方法
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
Laravel如何实现模型的全局作用域?(Global Scope示例)
Laravel如何使用.env文件管理环境变量?(最佳实践)
打开php文件提示内存不足_怎么调整php内存限制【解决方案】
Linux系统命令中screen命令详解
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
EditPlus中的正则表达式实战(5)
JS弹性运动实现方法分析
Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】
bing浏览器学术搜索入口_bing学术文献检索地址
如何在景安云服务器上绑定域名并配置虚拟主机?
谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
中山网站推广排名,中山信息港登录入口?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解
七夕网站制作视频,七夕大促活动怎么报名?
Bootstrap CSS布局之列表
常州企业网站制作公司,全国继续教育网怎么登录?
jquery插件bootstrapValidator表单验证详解
ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
网站建设要注意的标准 促进网站用户好感度!
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
VIVO手机上del键无效OnKeyListener不响应的原因及解决方法
今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】
如何解决hover在ie6中的兼容性问题
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】
Win11怎么设置默认图片查看器_Windows11照片应用关联设置
Android Socket接口实现即时通讯实例代码
Linux系统命令中tree命令详解
lovemo网页版地址 lovemo官网手机登录
百度浏览器如何管理插件 百度浏览器插件管理方法
PHP 500报错的快速解决方法
如何用腾讯建站主机快速创建免费网站?

