news 2026/9/23 4:43:15

Laradock 对比 XAMPP / MAMP:从一体化安装包迁移到 Docker 容器环境的完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Laradock 对比 XAMPP / MAMP:从一体化安装包迁移到 Docker 容器环境的完整指南

Laradock 对比 XAMPP / MAMP:从一体化安装包迁移到 Docker 容器环境的完整指南

【免费下载链接】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

XAMPP、MAMP 与 WAMP 自 2000 年代初期以来,一直是无数 PHP 开发者搭建本地环境的默认方式:下载一个安装包、点击控制面板、服务即刻运行,无需命令行、无需 Docker。Laradock 保留了这种"开箱即用"的简便性,但将所有组件放进彼此隔离的 Docker 容器中运行,而非直接安装到你的操作系统上。本文基于官方对比文档,客观分析两种方案各自擅长的场景,并给出约 10 分钟即可完成的从 XAMPP / MAMP / WAMP 迁移到 Laradock 的实战步骤。

TL;DR:只有当 Docker 无法在你的机器上运行时,才考虑选择 XAMPP / MAMP;否则 Laradock 能以同样的便捷性为你带来按项目隔离的 PHP 版本、贴近生产环境的栈结构,以及始终保持干净的主机。

XAMPP / MAMP 是什么

XAMPP 和 MAMP 是免费的一体化安装包,直接把 Apache、MySQL(或 MariaDB)和 PHP 安装到你的 Windows、macOS 或 Linux 机器上。它们的工作方式如下:

  • 一个安装程序将 Apache、MySQL 和 PHP 直接装到操作系统上;
  • 项目存放在htdocs/目录下;
  • 通过控制面板启动/停止服务;
  • 通过localhost/phpmyadmin管理数据库。

这套方案确实对新手极其友好,但长期使用会暴露出如下代价:

  • 全局只有一个 PHP 版本:所有项目共用同一个 PHP,切换版本意味着重装 XAMPP;
  • 团队之间配置漂移:每个成员的机器配置靠手工维护,无法保持一致;
  • 没有隔离:一份损坏的 MySQL 配置会影响所有项目;
  • 与生产环境脱节:本机原生环境与你的 Linux 服务器形态差异巨大;
  • 卸载不干净:卸载后仍会残留大量文件与配置。

用 Laradock 实现同样的功能

Laradock 的做法是在项目目录旁克隆一份仓库,然后用一条命令启动你需要的服务栈:

cd my-project git clone https://github.com/laradock/laradock.git cd laradock

启动服务有两种等价方式:Laradock CLI 或直接使用 Docker Compose。

方式一:Laradock CLI(推荐,首次运行带交互向导)
./laradock start nginx mysql phpmyadmin
方式二:Docker Compose(纯手工,不依赖 CLI)
cp .env.example .env docker compose up -d nginx mysql phpmyadmin

启动后你会得到:

  • 应用入口:http://localhost
  • phpMyAdmin:http://localhost:8081(主机名mysql,用户default,密码secret
  • 偏好 Apache 而非 Nginx?只需换成./laradock start apache2 mysql phpmyadmin(或docker compose up -d apache2 mysql phpmyadmin),区别仅此而已。

所有组件都在容器中运行:每个项目可以拥有自己的 PHP 版本(5.6 至 8.5)和独立数据库,团队成员基于同一份文件得到完全一致的栈,而./laradock remove命令可以让你的机器恢复到和之前一模一样的状态。

值得说明的是,Laradock CLI 只是普通docker compose之上的一层便捷封装,不持有状态、不生成额外文件,并且每执行一条命令都会打印其真实运行的docker compose命令(见 CLI 脚本 头部注释)。纯docker compose的方式在任何时候都同样可用。

并排对比

维度XAMPP / MAMPLaradock
安装桌面安装包(全局安装 Apache/MySQL/PHP)无需安装(git clone 即可;仅需 Docker 本身)
启动控制面板按钮./laradock start nginx mysql
PHP 版本全局单一版本(切换需重装)5.6 至 8.5,按项目隔离,通过.env配置
项目间隔离完整(每个项目独立容器)
LAMP 之外的服务无(仅 Apache + MySQL)100+(Redis、Postgres、队列、搜索、邮件、LLM 等)
是否贴近 Linux 服务器否(原生 Windows/macOS)是(相同的容器)
团队一致性各自手工配置相同文件 = 所有成员一致的栈
清理卸载程序,残留物长期滞留./laradock remove,零残留
主机占用全局安装 Apache/MySQL/PHP主机上不安装任何东西

什么情况下选择 XAMPP / MAMP

  • Docker 无法在你的机器上运行(旧硬件、公司限制);
  • 教授绝对初学者,GUI 控制面板能显著降低上手门槛;
  • 只有一个很小的项目,原生方案足够简单,不需要更多能力。

什么情况下选择 Laradock

  • 你同时维护多个项目,或你的工作中需要多个 PHP 版本;
  • 你希望本地环境的行为与生产服务器一致;
  • 你需要 Apache + MySQL 之外的任何服务:Redis、Postgres、队列、搜索、邮件捕获器等,每个都只需一条命令即可启动;
  • 你希望有一台可以一条命令彻底清理干净的开发机。

从 XAMPP 迁移到 Laradock(约 10 分钟)

迁移共分 7 步,全程唯一需要安装的东西是 Docker 本身。

  1. 安装 Docker Desktop(Windows/macOS)或 Docker Engine(Linux),这是本指南中唯一的一次安装。Laradock 要求 Docker Compose v2.20 或更新版本(CLI 脚本 中MIN_COMPOSE_MINOR=20即为此约束)。
  2. 在旧 phpMyAdmin(XAMPP)中导出数据库为 SQL 文件。
  3. 把项目移出htdocs/,放到任意你喜欢的位置,并在其旁边添加 Laradock:
    cd my-project git clone https://github.com/laradock/laradock.git cd laradock && cp .env.example .env
  4. 启动你的服务栈./laradock start nginx mysql phpmyadmin(或docker compose up -d nginx mysql phpmyadmin;首次运行需要几分钟构建镜像,之后只需几秒即可启动)。
  5. 在全新的 phpMyAdmin 中导入数据库:访问localhost:8081,创建数据库并导入第 2 步导出的文件。
  6. 更新应用配置:数据库主机名从localhost改为mysql(容器之间通过服务名互相访问),用户default,密码secret(可在.env中修改)。
  7. 告别旧习惯,对照下表切换日常操作:
在 XAMPP 中你...在 Laradock 中你...
打开控制面板并点击 Start./laradock start nginx mysql
从面板停止 Apache/MySQL./laradock stop
把项目放进htdocs/项目放在任意位置;在.env中设置APP_CODE_PATH_HOST
编辑php.ini编辑php-fpm/phpX.Y.ini,重新构建一次
通过重装 XAMPP 切换 PHP修改.env中的PHP_VERSION=,重新构建一次
在操作系统上运行php/composer./laradock workspace(内置 PHP、Composer、Node、git 的 Linux shell)
phpMyAdmin 位于localhost/phpmyadminphpMyAdmin 位于localhost:8081

迁移过程中的关键配置解读

为了让迁移顺利落地,以下配置项值得重点关注,它们分别对应迁移步骤 3、6 与"切换 PHP"三个环节。

项目目录映射:APP_CODE_PATH_HOST

默认值../表示 Laradock 目录的上一级(即你的项目根目录)会被挂载进容器内的/var/www(.env.example)。容器内部访问路径固定在/var/www,例如 Nginx 默认站点配置 的root /var/www/public,以及 PHP-FPM 的挂载声明。迁移时只需确认项目代码确实位于 Laradock 目录的上一级,或相应调整该变量。

数据库账号与端口:MYSQL_*系列

MySQL 容器的关键变量定义在 mysql/defaults.env:

变量默认值说明
MYSQL_VERSION8.4可用 5.7、8.0、8.4、9.0;切换大版本会改变数据目录格式(见下)
MYSQL_DATABASEdefault容器启动时自动创建的数据库
MYSQL_USER/MYSQL_PASSWORDdefault/secret应用连接使用的账号密码
MYSQL_ROOT_PASSWORDrootroot 账号密码
MYSQL_PORT3306宿主机映射端口,可改 3307 等避免与本机冲突

这些变量通过 mysql/compose.yml 以环境变量形式注入容器,映射关系为"${MYSQL_PORT}:3306"。由于每个服务目录下都有预填好的defaults.env(mysql/defaults.env、phpmyadmin/defaults.env),你不需要复制或编辑它们——任何覆盖只需写进你自己的.env,且.env中的值永远优先(.env.example)。

注意:数据库数据存放在DATA_PATH_HOST(默认~/.laradock/data)下的子目录中,数据库引擎不会对更新大版本后产生的旧数据做降级兼容。若更换*_VERSION后数据库容器反复重启,要么把版本改回去,要么删除对应引擎在DATA_PATH_HOST下的子目录重新初始化(这会清除该数据库的本地数据),详见 .env.example。

按项目切换 PHP 版本:PHP_VERSION

.env中的PHP_VERSION默认8.4,可接受值为8.5 - 8.4 - 8.3 - 8.2 - 8.1 - 8.0 - 7.4 - 7.3 - 7.2 - 7.1 - 7.0 - 5.6(.env.example)。它同时作用于 Workspace 与 PHP-FPM 容器:PHP-FPM 构建时通过LARADOCK_PHP_VERSION参数传入(php-fpm/compose.yml),对应版本的php-fpm/phpX.Y.ini会被挂载为容器内 php.ini(php-fpm/compose.yml)。也就是说,迁移表中"切换 PHP = 改PHP_VERSION+ 重新构建一次"的说法,在源码层面正是由这一参数链路实现的。

phpMyAdmin 的端口与账号

phpMyAdmin 的默认端口8081、用户default、密码secret定义在 phpmyadmin/defaults.env,并通过 phpmyadmin/compose.yml 注入容器。其中PMA_DB_ENGINE=mysql指定其连接的数据库引擎,PMA_UPLOAD_LIMIT=2G等参数保证大 SQL 文件的导入不会被截断。

关于 XAMPP / MAMP 的常见问题

XAMPP 免费吗?

是的,XAMPP(Apache Friends)免费且开源。MAMP 提供免费版本,另有付费的 MAMP PRO 升级版提供多虚拟主机等更高级的功能。

XAMPP 能运行多个 PHP 版本吗?

不能原生支持;XAMPP 每次安装只有一个全局 PHP 版本。要并排运行多个版本,需要安装多份 XAMPP 拷贝或借助第三方版本切换工具。而 Laradock 开箱即用地为每个项目提供拥有独立 PHP 版本的独立容器。

XAMPP 适合生产环境吗?

不适合。XAMPP 被明确设计并定位为本地开发工具;其默认配置(MySQL root 密码为空、phpMyAdmin 暴露在外)未针对生产环境做加固。

XAMPP 支持 Docker 吗?

不支持。XAMPP 将 Apache、MySQL 和 PHP 直接安装到操作系统上,不使用容器。这正是本文对比的核心差异。

如何把 XAMPP 项目迁移到 Docker?

从 phpMyAdmin 导出数据库,把项目文件移出htdocs/,然后按照上文从 XAMPP 迁移到 Laradock的分步指南操作,全程约 10 分钟。

如需了解完整的方案全景(包括 DDEV、Sail、Herd 与 Lando),可查看 Laradock vs Others;完整的安装与配置参考见 Getting Started。

【免费下载链接】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

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/23 4:43:10

CMMI 3.0规范文档编写指南:四层结构、裁剪逻辑与追溯校验

简介:CMMI 3.0 软件工程规范文档面向软件研发管理者、过程改进(EPG)成员及质量与项目管理从业者,用于系统理解能力成熟度模型集成框架,解决组织在过程定义、量化管理与持续优化中缺乏统一参照的问题。资源包共1个文件&…

作者头像 李华
网站建设 2026/9/23 4:43:06

从描述到治理:Agent技能设计的完整实操指南

1. 先搞清楚:Agent的技能到底是什么1.1 技能不是普通函数,差的不是语法做Agent开发有一段时间的人应该都有同感:把一个大模型接上工具,让它能查天气、发邮件、查数据库,这事儿本身不难。真正难的是让模型在合适的场景下…

作者头像 李华
网站建设 2026/9/23 4:42:45

乳酰化修饰:表观遗传学新星与疾病研究突破

1. 乳酰化研究背景与行业现状乳酰化(Lactylation)作为近年来表观遗传学领域最受关注的新型翻译后修饰方式,正在彻底改变我们对细胞代谢与基因调控关系的认知。这种将乳酸基团共价结合到蛋白质上的修饰方式,最早由芝加哥大学赵英明…

作者头像 李华
网站建设 2026/9/23 4:40:50

机器学习房价预测系统实战:从源码解析到特征工程与模型部署

简介:这是一个面向房地产评估与金融风险评估等场景的机器学习实践项目,基于Python语言,适合想快速上手回归建模的开发者、学生或数据爱好者。项目中实现了较完整的数据处理流程:针对提供的CSV数据集,先进行异常值处理、…

作者头像 李华
网站建设 2026/9/23 4:40:32

解析Barrier Mapper报错“20 must be greater than 20”的成因与排查方法

1. 先说结论:这个报错到底在说什么做生态廊道分析的人,十有八九都跟 Linkage Mapper 打过交道。这个工具箱在 ArcGIS 里几乎是“栖息地连接度分析”的标配。跑完 Linkage Mapper 的网络构建之后,下一步经常就是打开 Barrier Mapper 插件&…

作者头像 李华