@
abccccabc 感觉是你配置哪里不对,或者电脑有问题。我在腾讯云、阿里云上随便开一个 1 核 2G 的机器,在上面装个 docker,启动个 Laravel 项目的容器,用自己笔记本的 vscode-remote 连到服务器的 容器 内开发。算上 vscode PHP 相关的 5 、6 个插件,2G 内存同时开 两个 这样的容器完全不费劲,何况是本地的 docker 。而且用 alpine 为底最大的作用还是减少硬盘的占用,内存方面 PHP 作为非常驻内存的语言来说,本地测试没什么量的情况下基本不占用多少。要精细控制的话 docker 的 desktop 版本也都有带 docker swarm,加个配置轻松就可以限制单个容器的内存占用。
在加上 alpine 作为精简包一般都是作为线上环境自定义镜像的底。开发、测试环境用这种底,连个基础的 ps 、tail 工具都没有,装一些 PHP 扩展 大概率也会缺包。虽然可以后续去装,但开发、测试环境本身不就是为了快速的使用、方便调试。这样还需要后续调试半天,使用场景也不太合适。至于验证兼容性从结果上看就更不存在了,毕竟最终上线部署的服务器绝大部分都是 Linux,开发和测试环境要尽可能仿真。如果他在 Windows 上行,上线到 Linux 之后出现一些奇奇怪怪的问题,那还说兼容性不行(不过这也算常态,不然 docker 也不会这么火)。如今反过来,还是本地环境配置不到位。
最终还是知其然要知其所以然,alpine 这类精简发行版到底精简了什么,或者反过来说你这个项目到底依赖什么,缺了会导致什么问题。这点没有概念的话,哪怕用 Golang 这种最终编译成二进制文件的、只与平台相关几乎和外部环境无关的情况下,无脑用 alpine 照样大概率跑不起来。用这种论据说 Laravel 不如 TP,个人还是不太认可的,只能说 TP 相对于 Laravel 依赖更少,但依赖更少在现代包管理软件的加持下,只能算中立属性,并不算什么核心的优点。