首页/新闻资讯/正文详情

Laradock vs Laravel Sail:从官方脚手架到 100+ 服务的 Docker PHP 全栈环境迁移实战指南

发布时间:2026/9/23 7:53:11 来源:云帆数科 栏目:资讯中心
Laradock vs Laravel Sail:从官方脚手架到 100+ 服务的 Docker PHP 全栈环境迁移实战指南
后端开发工具DevOps【免费下载链接】laradockFull PHP development environment for Docker. Run Laravel, Symfony, CodeIgniter, Phalcon, WordPress, Drupal, Magento, Moodle, or any PHP project with 70 pre-configured services: Nginx, Apache, PHP-FPM, MySQL, PostgreSQL, MongoDB, Redis, Elasticsearch more.项目地址https://gitcode.com/gh_mirrors/la/laradock点击查看免费下载Laravel Sail 是 Laravel 官方内置的 Docker 脚手架随新项目开箱即用Laradock 则是框架无关的 PHP Docker 开发环境目录通过原生docker compose工作流提供 100 预配置服务。本文用同一个 Laravel 应用分别跑在两个方案上逐条对比安装、日常命令、服务能力与生产部署路径并附上从 Sail 平滑迁移到 Laradock 的完整操作步骤帮助你判断什么时候 Sail 够用、什么时候该换 Laradock。一句话结论纯 Laravel 应用、需求不超出 Sail 服务清单时选官方 Sail 就足够了当你的技术栈超出 Sail 的服务列表、需要同时管理非 Laravel 项目、希望直接用docker compose而不是套一层包装命令、或者想让开发环境一路延伸到生产环境时Laradock 是更合适的选择。Sail 是什么Laravel 官方的最小 Docker 方案Laravel Sail 是 Laravel 官方提供的、在 Docker 中运行 Laravel 应用的命令行接口。每个新 Laravel 项目都会自动携带它无需单独安装Laravel 会为你生成一个sail命令和一份精简的docker-compose.yml覆盖 PHP、数据库以及少量常见服务。它刻意保持最小化且只面向 Laravel。与之相对的 Laradock 则是一个框架无关的替代方案通过原生docker compose工作流提供 100 预配置服务——每个服务对应仓库中的一个目录想用哪个就启动哪个而不是通过包装命令来操作。Sail 是 Laravel 官方的 Docker 脚手架小巧、干净、只属于 Laravel。Laradock 是框架无关的服务目录100 服务共享同一条原生 Docker 工作流。本文让同一个应用同时跑在这两套方案上。用 Sail 搭建一条命令生成整个环境对于全新应用Sail 用一条命令即可完成脚手架搭建curl -s https://laravel.build/my-app?withmysql,redis | bash cd my-app ./vendor/bin/sail up -d对于已有应用先安装依赖再交互式选择服务composer require laravel/sail --dev php artisan sail:installsail:install会弹出菜单让你勾选服务MySQL、Postgres、Redis、Meilisearch、Mailpit、Selenium 等。日常开发中所有操作都通过sail包装命令进行sail up sail artisan migrate sail composer require sail test更换 PHP 版本时需要手工编辑compose.yaml把构建上下文指向另一个运行时目录如./vendor/laravel/sail/runtimes/8.3同步修改image名称然后执行sail build --no-cache。用 Laradock 搭建同一套环境CLI 或原生 Compose 二选一与 Sail 的开箱即装不同Laradock 通过git clone引入项目然后有两种等价的操作方式cd my-app git clone https://gitcode.com/gh_mirrors/la/laradock.git cd laradock方式一Laradock CLI仓库根目录的laradock脚本一个 1453 行的 bash 可执行文件./laradock start nginx mysql redis workspace ./laradock workspace方式二原生 Docker Composecp .env.example .env docker compose up -d nginx mysql redis workspace docker compose exec workspace bash进入workspace容器后artisan、composer、npm全部都在里面——它是 Laradock 的开发终端。也可以让 CLI 替你选择./laradock setup会检测到项目是 Laravel 并预选 nginx/mysql/redis效果与sail:install的菜单完全一致同时把将要执行的每一条真实命令都展示给你。日常操作直接使用 Docker./laradock exec workspace php artisan migrate、./laradock logs nginx -f、./laradock stop。更换 PHP 版本只需改.env中的一个变量然后重建镜像# 在 .env 中写入 PHP_VERSION8.3 ./laradock rebuild php-fpm workspace # 或等价的 Compose 命令 docker compose build php-fpm workspace.env.example中明确列出了可选的 PHP 版本8.5、8.4、8.3、8.2、8.1、8.0、7.4、7.3、7.2、7.1、7.0、5.6。这意味着 Laradock 可以运行从 PHP 5.6 到 8.5 的任何版本——这是 Sail 不会尝试的能力对维护遗留项目尤其有价值。两种方式为何等价CLI 的本质是 Compose 的友好包装打开仓库根目录的 laradock 脚本其头部注释直接说明了设计契约无状态、不生成文件、每条命令都会打印它将要运行的真实docker compose命令纯docker compose永远同样可用。 脚本开头的run()函数第 100 行附近正是这一契约的体现——先printf打印真实的docker compose ...命令行再实际执行。所以使用 CLI 并不会把你锁进某种私有体系你在 CLI 里学到的每一条命令本质上都是在学习标准的 Docker Compose。并排对比Sail 与 Laradock 的核心差异维度Laravel SailLaradock随何而来Laravel 官方内置git clone服务数量约 10 个安装时勾选100任意时间启动任意服务框架支持仅 Laravel任意 PHP 项目命令风格sail *包装命令标准docker compose *Web 服务器默认内置 PHP 服务器artisan serve真实的 NGINX / Apache / Caddy生产风格PHP 版本8.0 - 8.4 运行时5.6 - 8.5后期加服务仅限 Sail 支持的范围否则手工改 compose.yamldocker compose up -d {service}开发终端无命令全部通过sailworkspace容器内置 Composer、Node、git 及大量工具配置方式项目内一份 compose.yaml每个服务独立目录 一份.env生产部署仅限开发——Sail 明确不用于生产./laradock ship→ 加固镜像部署到服务器、KubernetesEKS/GKE/AKS或托管云ECS、Cloud Run、Fly上述100 服务并非营销话术在仓库根目录每一个顶层文件夹就是一个可运行的服务docker-compose.yml 第 42 行的 Composeinclude机制会把它们全部纳入服务目录因此文件夹列表就是服务清单从 MySQL、Postgres、Redis、Elasticsearch到 Kafka、ClickHouse、向量数据库、本地 LLM、监控套件一应俱全。配置机制的底层差异一份 .env 对抗所有 defaults.envSail 的全部配置集中在项目内的一份compose.yamlLaradock 则采用共享 服务私有的两层配置模型详见 Getting Started你的.env首次运行生成或手工cp .env.example .env保存共享设置路径、PHP 版本、项目名。例如.env.example中的APP_CODE_PATH_HOST../代码挂载路径、PHP_VERSION8.4、COMPOSE_PROJECT_NAMElaradock。每个服务在自己的目录中预填设置例如 mysql/defaults.env 定义了MYSQL_VERSION8.4、MYSQL_DATABASEdefault、MYSQL_USERdefault、MYSQL_PASSWORDsecret、MYSQL_PORT3306nginx/defaults.env 定义了NGINX_HOST_HTTP_PORT80。这些文件开箱即用无需复制或编辑。想改任何设置无论是共享的还是服务私有的只需把对应行写进你的.env——你的.env永远优先于所有defaults.env。例如想换 MySQL 端口在.env加一行MYSQL_PORT3307即可。这正是服务多却配置不乱的关键加一个服务不是修改某个大文件而是docker compose up -d {新服务名}它的默认配置已经在其目录的defaults.env里就绪。命令映射Sail 的每一条命令在 Laradock 中都有对应物Sail 把每个动作都收拢到sail这一个包装命令下Laradock 则用通俗的动词管理整个技术栈并把开发工具放进workspace容器或通过一次性的exec执行。能力相同但没有包装命令的锁定感。任务Laravel SailLaradock启动技术栈sail up -d./laradock start停止技术栈sail stop./laradock stop重启sail restart./laradock restart重建镜像sail build --no-cache./laradock rebuild进入应用容器 shellsail shell/sail root-shell./laradock workspace/./laradock workspace --root运行 Artisansail artisan migrate./laradock exec workspace php artisan migrate运行 Composersail composer require ..../laradock exec workspace composer require ...运行原始 PHP 命令sail php script.php./laradock exec workspace php script.php运行 Node / NPMsail npm run dev./laradock exec workspace npm run dev运行测试套件sail test./laradock test自动检测artisan → pest → phpunit浏览器测试sail dusk./laradock start selenium./laradock testREPLsail tinker./laradock exec workspace php artisan tinker打开数据库 shell手工用凭据连接./laradock db自动检测 MySQL/MariaDB/Postgres浏览器打开应用手动输入http://localhost./laradock open或open mailpit、open phpmyadmin本地站点公网 URLsail share./laradock sharecloudflared / ngrok预览发出的邮件Mailpit UI内置./laradock start mailpit→./laradock open mailpit查看运行状态sail ps./laradock info更换 PHP 版本编辑compose.yamlsail build./laradock set PHP_VERSION8.4./laradock rebuild添加服务sail add从 Sail 菜单./laradock start {service}100 可选部署到生产不支持仅开发./laradock ship→ 服务器 / Kubernetes / 云降级到原生 Dockersail将其隐藏./laradock 任意命令直通docker compose两个值得注意的差异第一Sail 把所有工具调用捆绑在sail动词之下而 Laradock 把你的开发工具artisan、composer、npm放在workspaceshell 内部——一次./laradock workspace就进入它们共同的家然后像在本地机器上一样直接输入命令即可。查看 workspace/compose.yml 可以看到这个容器的体量它以LARADOCK_PHP_VERSION${PHP_VERSION}与 PHP-FPM 保持版本一致并通过WORKSPACE_INSTALL_*系列构建参数Xdebug、Node、Yarn、WP-CLI、Drush、Python、Terraform 等上百个开关预装了大量工具。第二Sail 止步于你的笔记本电脑而 Laradock 的同一套技术栈可以一路延伸到生产环境。命令背后的源码级实现CLI 不只是口号Laradock CLI 的自动检测能力在 laradock 脚本中有具体的实现证据cmd_test()约第 1137 行在 workspace 内依次检测artisan执行php artisan test、vendor/bin/pestPest、vendor/bin/phpunitPHPUnit命中哪个就用哪个额外参数直接透传如./laradock test --filterOrders。cmd_db()约第 1174 行通过docker compose ps检测正在运行的数据库服务MySQL/MariaDB 用mysql -u${MYSQL_USER:-default} -p${MYSQL_PASSWORD:-secret}进入PostgreSQL 用psql -U ${POSTGRES_USER:-default}凭据自动处理。cmd_share()约第 1196 行优先使用cloudflared无需注册否则回退到ngrok把本地站点暴露为临时公网 URL。cmd_open()约第 1152 行根据服务名计算 URL——app打开http://localhost端口来自NGINX_HOST_HTTP_PORT默认 80mailpit、phpmyadmin、adminer各有默认端口。cmd_ship()约第 1216 行在 Apple Silicon 上默认构建linux/amd64镜像防止在绝大多数 amd64 服务器上出现 exec format error默认镜像名为laradock-app:latest支持--push推送镜像仓库。透传机制CLI 主入口约第 1380 行起对未识别的命令直接交给docker compose执行所以./laradock ps、./laradock config、./laradock down全都开箱即用。这套设计意味着使用 Laradock 学到的能力就是标准的 Docker Compose 能力不会出现离开工具就无从下手的困境。选择 Sail 的场景应用是纯 Laravel且技术栈全部落在 Sail 的菜单内你优先看重官方与极简团队已经把sail命令烂熟于心。选择 Laradock 的场景你需要超出 Sail 清单的任何服务RabbitMQ、Kafka、Elasticsearch 集群、ClickHouse、向量数据库、本地 LLM、监控系统——在 Laradock 中每一个都只是一条up命令的事你同时维护非 Laravel 项目希望一个环境覆盖所有项目你想要生产风格的 Web 服务器NGINX/Apache/Caddy而不是容器里的artisan serve你维护着 Sail 无法运行的 PHP 5.6/7.x 遗留应用你不想依赖包装命令希望学的就是纯 Docker Compose你希望同一套技术栈到达生产环境。Sail 明确仅限开发Laradock 的./laradock ship会构建一个加固的应用镜像部署到单台服务器、KubernetesEKS/GKE/AKS或托管云AWS ECS、Cloud Run、Fly且跑的就是你开发时用的那一套容器。详见 Deploy to Production。已经在用 Sail迁移到 Laradock 只需 7 步Sail 和 Laradock 都把容器命名为mysql、redis所以你的应用.env几乎不用改。在 Sail 还在运行时导出数据库数据库名与凭据按你的.env调整./vendor/bin/sail exec mysql mysqldump -uroot -ppassword laravel backup.sql停止 Sail./vendor/bin/sail down在项目内加入 Laradockgit clone https://gitcode.com/gh_mirrors/la/laradock.git cd laradock cp .env.example .env启动你的技术栈./laradock start nginx mysql redis workspace # 或等价命令docker compose up -d nginx mysql redis workspace导入数据库./laradock exec -T mysql mysql -uroot -proot default ../backup.sql更新应用的.envDB_HOSTmysql和REDIS_HOSTredis保持不变把DB_DATABASE/DB_USERNAME/DB_PASSWORD改成 Laradock 的取值默认见 mysql/defaults.env库default、用户default、密码secret或在 Laradock 的.env中设置为你自己的值。可选清理稳定运行后执行composer remove laravel/sail --dev并删除 Sail 的compose.yaml。迁移过程中有两点值得注意一是 Laradock 首次启动时CLI 向导./laradock setup会检测你的项目类型Laravel、WordPress、Symfony、Drupal 或纯 PHP并预填所有答案还会询问是否帮你把应用.env里的DB_HOST127.0.0.1之类的本地地址改成容器服务名修改前先备份到.env.bak.laradock并给每行写入# set by laradock标记你之后手工改过的行它不会再动二是数据库密码类设置只在数据库首次初始化时生效改.env不会更新已存在的数据文件需要换密码应在数据库内部执行如ALTER USER或删除DATA_PATH_HOST下对应引擎的数据目录让其重新初始化。常见问题Laravel Sail 免费吗是的。Sail 作为 Composer 开发依赖随每个新 Laravel 项目附带完全免费且开源MIT 许可由 Laravel 团队维护。Sail 只支持 Laravel 吗是的。Sail 专为 Laravel 应用构建不是通用的 PHP Docker 工具。对非 Laravel 的 PHP 项目Symfony、WordPress、纯 PHP需要 Laradock 这类框架无关的方案。Sail 支持哪些服务Sail 的安装器提供一份精选清单MySQL、PostgreSQL、MariaDB、MongoDB、Redis、Valkey、Memcached、Meilisearch、Typesense、MinIO、Mailpit、RabbitMQ、Selenium 等约 15 个服务可在安装时通过sail:install选择或之后用sail:add追加。相比之下Laradock 仓库中每个顶层目录都是一个可启动的服务100且不限于 Laravel 生态。安装后还能给 Sail 加服务吗可以。运行php artisan sail:add从与sail:install相同的菜单中选择额外服务它会更新你的compose.yaml并重新接线环境。而在 Laradock 中加服务等价于./laradock start {服务名}或docker compose up -d {服务名}——无需修改任何清单文件。Sail 在 macOS 或 Windows 上会慢吗可能会。Sail 的文件共享性能完全取决于 Docker Desktop 绑定挂载的速度这对vendor/目录庞大的 PHP 项目是众所周知的痛点。新版 Docker Desktop 的 VirtioFS 改进帮助很大但这是 Docker Desktop 的局限并非 Sail 或 Laradock 特有。想继续了解完整的 PHP 开发环境生态对比包括 DDEV、Herd、Lando、XAMPP参见 Laradock vs Others。如果决定尝试 LaradockGetting Started 只需大约五分钟完整的 CLI 命令参考见 The Laradock CLI。赞分享后端开发工具DevOps【免费下载链接】laradockFull PHP development environment for Docker. Run Laravel, Symfony, CodeIgniter, Phalcon, WordPress, Drupal, Magento, Moodle, or any PHP project with 70 pre-configured services: Nginx, Apache, PHP-FPM, MySQL, PostgreSQL, MongoDB, Redis, Elasticsearch more.项目地址https://gitcode.com/gh_mirrors/la/laradock点击查看免费下载相关推荐Laradock vs DDEV用同一套 Laravel 项目实测两种 Docker 本地 PHP 开发环境的搭建、选型与迁移Laradock vs DDEV用同一套 Laravel 项目实测两种 Docker 本地 PHP 开发环境的搭建、选型与迁移 DDEV 与 Laradock后端开发工具DevOpsCarballo-bloom-1.3B未来路线图下一代加利西亚语模型将带来什么Carballo bloom 1.3B未来路线图下一代加利西亚语模型将带来什么 Carballo bloom 1.3B作为一款针对加利西亚语优化的1.3B参后端开发工具DevOpsCEmu高级调试技巧如何利用内存映射和寄存器监控调试复杂汇编程序CEmu高级调试技巧如何利用内存映射和寄存器监控调试复杂汇编程序 CEmu 是一个轻量级的多架构汇编语言模拟器支持 x86、ARM、MIPS、SPARC 等后端开发工具DevOps创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

从零复现LSTM天池新闻文本分类:一份能跑通的Python源码
从零复现LSTM天池新闻文本分类:一份能跑通的Python源码

简介:这份Python源码包围绕天池新闻文本分类比赛展开,采用LSTM作为核心模型,适合人工智能、计算机及相关专业学生、教师与企业员工用于课程设计、毕业设计或赛题复现。包内共25个文件,以14个py脚本为主体,辅以9个pyc编… · 2026/9/23 7:53:11

agent-skills 实战指南:为 AI 编程助手构建可复用技能模块
agent-skills 实战指南:为 AI 编程助手构建可复用技能模块

1. 从零认识 agent-skills:它到底解决了什么问题第一次看到agent-skills这个词,很多人会以为是某个新出的 AI 模型或者插件市场。其实不是。它更像是一套给 AI coding agent 准备的“技能包规范”——你可以把它理解成给 AI 编程助手写的“操作手册 工具… · 2026/9/23 7:53:11

从普通Prompt到思维链CoT:数学推理提示词实战指南
从普通Prompt到思维链CoT:数学推理提示词实战指南

如果你只把提示词工程当成“把问题描述得更清楚”,那你大概率会在数学推理上碰一鼻子灰。我最近做了一组很简单的对比测试:让同一个大模型计算一道包含加权平均和混合运算的数学题,用普通的 Prompt 直接问,它一本正经地给出了一个… · 2026/9/23 7:53:11

3个坑教你手写实现:敏于行性能优化实录
3个坑教你手写实现:敏于行性能优化实录

3个坑教你手写实现:敏于行性能优化实录 报错一堆看不懂 StackTrace?别慌。 这行代码在敏于行项目里跑,CPU 直接飙到 90%。 今天带你手写实现一个极简的优化方案,不用引入重型框架。 性能瓶颈定位… · 2026/9/23 8:35:25

基于STM32的单相交流电子负载:SPWM生成与电流闭环设计
基于STM32的单相交流电子负载:SPWM生成与电流闭环设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/23 8:35:25

储能电站实时监控大屏搭建实战:5分钟出清下的数据架构与计算引擎
储能电站实时监控大屏搭建实战:5分钟出清下的数据架构与计算引擎

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/23 8:35:19

Atlas 300V推理卡部署YOLOv5全流程实战
Atlas 300V推理卡部署YOLOv5全流程实战

Atlas这个词,近一年在我耳边出现的频率高得离谱。不管刷技术社区还是看工作群,总有人提"atlas跑YOLO""atlas部署推理",我一度以为是什么新出的开源框架,直到我面前摆了一张华为Atlas 300V 24G运算加速卡&… · 2026/9/23 8:34:51

姨甥源码解析:3步定位核心逻辑,拒绝复制即报错
姨甥源码解析:3步定位核心逻辑,拒绝复制即报错

姨甥源码解析:3步定位核心逻辑,拒绝复制即报错 复制来的代码跑不通不知道怎么调?别急,这不是你的问题,是你没看懂 源码解析… · 2026/9/23 8:34:51

2026年五大AI降本增效工具实测与选型指南
2026年五大AI降本增效工具实测与选型指南

1. 项目概述最近两年AI技术在各行各业的渗透率持续攀升,随之而来的是企业对AI应用成本控制的强烈需求。作为一名长期关注AI工具落地的技术顾问,我实测了市面上主流的AI降本增效工具,发现2026年这五大工具在实际业务场景中的表现尤为突出。2. … · 2026/9/23 8:34:45

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码