Skip to content

DevOps 基础篇:从手动部署到可复现交付

这不是一组互不相关的工具教程,而是一条完整的生产交付路径:代码如何到达服务器,服务如何稳定运行,多个服务如何协作,部署动作如何被记录、复用和自动执行

很多人一想到 DevOps,就直接想到 Kubernetes。但对一人公司、个人项目和大多数中小型应用来说,真正需要解决的通常不是多集群调度,而是把重复、繁琐、容易出错的部署工作稳定地自动化。Kubernetes 本身也需要较高的学习、配置和运维投入,如果业务还没有达到集群化的规模,过早引入反而会增加负担。

因此,本篇先从更朴素、也更贴近多数项目的方案开始:Docker Compose 负责单机多应用,GitHub Actions 负责托管式。Compose 把服务拓扑随源码提交管理;GitHub Actions 提供免费额度内的托管 Runner、声明式 YAML、丰富模板和完整的 GitHub 配套。对多数中小项目而言,这套组合已经是低成本、低复杂度且足够可靠的自动化运维起点。

本篇不追求把所有概念和术语一次讲完,也不把文章写成工具名词大全。每引入一个工具,都是因为前一步已经暴露了一个真实问题:手动部署容易漏步骤,就先用脚本固化;服务器环境难以复现,就用 Docker 封装;重复动作需要触发和记录,就引入流水线;服务数量增加,就用 Compose 管理整体拓扑。先实践,再抽象;先解决眼前问题,再逐步升级,是这套基础篇的阅读方法。

这套内容解决什么问题

从手动部署开始,问题会逐步暴露:

  • 命令靠记忆,漏一步就可能发布失败;
  • 服务器需要安装越来越多的和构建工具;
  • 版本、配置和部署步骤难以追溯;
  • 服务从一个变成多个后,网络、卷和依赖关系变得复杂;
  • 流水线如果承担所有细节,也会重新变成一份难以维护的脚本。

基础篇的目标,是把这些问题逐层拆开,再用合适的工具收敛:Git 管版本,Docker 管运行环境,流水线管交付触发,Compose 管单机多服务应用拓扑。

推荐阅读路径

篇目解决的问题关键产物
01Nginx 如何承接Nginx 配置
02一台生产服务器如何运行服务公网服务器、SSH
03后端进程如何持续运行、健康检查
04源码和版本如何管理Git、GitHub
05如何隔离运行环境Docker Image、Container
06重复命令如何形成流水线Shell、Jenkinsfile、DAG
07如何使用托管式流水线GitHub Actions、Runner
08多个容器如何作为一个应用运行compose.yaml
09如何判断方案是否够用能力地图与边界

建议按顺序阅读并至少完成一次最小部署。不要一开始就跳到 Kubernetes:先理解单机部署中的服务、版本、配置、拓扑和验证,再判断是否真的需要集群。

读完之后应该具备的能力

  • 能把静态站点或后端服务部署到一台 Linux 服务器;
  • 能用 Git 管理源码、配置和运维文件;
  • 能用 Docker 固化运行环境,避免在服务器上散落安装依赖;
  • 能区分镜像、容器、服务、流水线和 Runner 的职责;
  • 能用 GitHub Actions 或 Jenkins 自动触发构建与部署;
  • 能用 Compose 管理单机上的网关、应用、数据库和其他依赖;
  • 能判断什么时候继续使用 Compose,什么时候进入 Kubernetes 等进阶方案。

先建立一个总心智模型

text
源码与配置
    ↓ Git 管理
镜像与制品
    ↓ Docker 封装
生产变更
    ↓ Jenkins / GitHub Actions 触发
单机应用拓扑
    ↓ Docker Compose 收敛
服务运行与健康验证

对一人公司和大多数中小型公司来说,基础篇已经足以建立一套可落地的自动化运维方案:源码可追溯,镜像可复用,变更可触发,拓扑可声明,结果可验证。只有当业务规模和可靠性要求超出单机边界时,才需要继续引入更复杂的平台。