# 从 LAMP 到 Docker based PaaS 工具

- Link: https://www.ixiqin.com/2024/03/21/from-lamp-to-docker-based-paas-tools/
- Published: 2024-03-21T23:32:54+08:00
- Author: 白宦成

在 [白宦成简史](https://www.ixiqin.com/2021/02/19/white-huancheng-brief/) 当中，
我写到过，我从 2013 年就开始写博客，至今已经 11 年有余。而我和互联网、编程的缘分，
也从 2013 年开始。

在 2013 年的时候，我主要是使用 WordPress 建站（现在也还在用，比如本站）。所以，从
哪个时候开始，我开始接触 LAMP、LNMP 这些个概念，并在过去的若干年里，使用了不少「
一键安装包」来部署我的网站。

我用的一键安装包 / 控制面板不算少：[LNMP.org](http://lnmp.org) 、[OneInStack](http://oneinstack.com)（
从它还是 LinuxEye 的时候开始用），[LAMP.sh](http://lamp.sh)等一键配置包，[AMH](http://amh.sh)、
[WDCP](https://wdcp.net/)、[AppNode](https://www.appnode.com/)、[Webmin](https://webmin.com/)、
[BT](http://bt.cn)、[VestaCP](https://vestacp.com/) 、[Virtualmin](https://www.virtualmin.com/)
等等一系列控制面板。

如果说这些工具有什么相同点，那便是都提供了十分方便的 LAMP / LNMP 的配置方式，让彼
时不够专业的我、主要是用别人开发好的应用的我能够快速部署一个基于 MySQL + PHP 的应用，
让它 Run 起来。

而随着时间的流逝，我已经不再是曾经的我了。我不再局限于使用别人写好的程序，我开始
自己写；我不再局限于使用 PHP 来编写程序，我同样会使用 Python、Ruby、Golang 、Node.
js 来编写应用程序；所有的这些，都告诉我，我需要在现有的框架和程序上去做很多额外的
配置，比如，我需要在 LNMP 的基础之上，配置 NPM，以完成 Node.js 的构建；我需要在系统
上配置 Docker ，以便于去运行某些需要复杂配置的环境。

曾经那些可以帮到我的程序已经不再能帮到我了，如今的他们，成了我的累赘。我开始需要
为了他们去多做一些事情了。

如今的我，更需要的是一个能够基于 Docker 来运行的管理工具，能够帮助我完成不同环境
的配置、管理的能力。我需要的是一个类似于 Heroku 的管理工具，能够让我把更多的精力
放在把事做好上。

我试用了

 * [Dokku](https://dokku.com/)
 * [Coolify](https://coolify.io/docs/installation)
 * [EasyPanel](http://EasyPanel.io)
 * [1Panel](http://1Panel.cn)
 * [CapRover](https://caprover.com/)

最终，选择了 CapRover ，主要原因有几个：

 1. 支持基础的 Docker 管理功能：这样意味着我其实可以在网页端管理这些资源。
 2. 使用 Nginx ，并集成了 Let’s Encrypt：我的应用都希望有 HTTPs 的能力，所以默认集成
    了 Let’s Encrypt 可以帮助我解决不少的问题。我也不需要自己去维护一个 Traefik 来解决
    请求转发的问题（我没有使用 Rancher / Kubesphere 之类的容器管理平台也是这个原因）
 3. 提供了一些一键配置的 Sample：这意味着我把一些我常用的应用迁移过去的时候，可以抄袭
    一下其官方推荐的配置，可以降低我的使用门槛。
 4. 足够久远：CapRover 作为一个从 2017 年就开始运作的工具，代表着有足够多的 issue 可以
    供我参考 / 使用，可以减少我踩坑的概率。
 5. 提供了 CLI 来进行部署：对于一个经常需要部署的人来说，提供 CLI / Github Action 可以
    帮助我快速实现多种不同需求下的部署，帮助我来提升效率。

种种的这些，让我最终从过去的 LNMP，跳船到了 Docker Base PaaS 工具上。
