DEVOPS · 自动化部署

从代码提交到一键上线

部署不是"最后一脚",而是一套从构建、测试到发布、回滚的工程体系。本栏目用最主流的工具(Docker、K8s、CI/CD、Nginx)和真实步骤,带你搭建稳定、可回滚、可观测的自动化交付流水线。

01代码提交 Git push
02自动构建 npm / maven build
03测试验证 单测 + 集成
04镜像打包 docker build
05发布部署 灰度 + 回滚
TOOLS

主流部署工具逐一手把手

🐳

Docker 容器化

镜像、容器、Dockerfile、Compose 编排,从"在我电脑上能跑"到"在哪都能跑"。

镜像Compose部署
☸️

Kubernetes 编排

Pod、Deployment、Service、Ingress 与弹性伸缩,容器集群的生产级编排方案。

PodService伸缩
🔁

CI/CD 流水线

Jenkins、GitLab CI、GitHub Actions 全解析,打通"代码到生产"的自动化通道。

JenkinsGitLab CIActions
🐧

Linux 服务器

服务器选型、环境初始化、进程与资源管理,从零搭建稳定的运行环境。

CentOSUbuntusystemd
🌐

Nginx 配置

反向代理、负载均衡、静态缓存与 HTTPS 配置,网站入口的"守门人"。

反向代理HTTPS缓存
📈

监控告警体系

Prometheus + Grafana 指标监控、日志收集与告警通知,让故障"先于用户发现"。

PrometheusGrafana告警
deploy.sh
$ git push origin main
✓ 代码推送成功,触发流水线
$ docker build -t app:latest .
✓ 镜像构建完成 (2.1s)
$ kubectl rollout restart deploy/app
✓ 滚动发布完成,健康检查通过
WHY AUTOMATE

为什么要自动化部署

手动部署的痛点:环境不一致、操作易出错、回滚困难、发布即"开盲盒"。自动化把整个过程固化为代码与流水线,让每一次发布都可重复、可审计、可回滚。

  • 环境一致性:容器化消除"本机能跑线上挂"
  • 发布可回溯:每次变更都有流水线记录
  • 快速回滚:一键切回上一稳定版本
  • 人力释放:从重复部署中解放出来专注业务
开始搭建流水线
DEPLOY STRATEGY

部署策略怎么选

不同业务容忍度不同,选错策略轻则影响体验,重则事故扩大。

策略原理适合场景
滚动发布逐批替换旧版本日常迭代、资源有限
蓝绿发布新旧环境并行,切流切换要求即时回滚
金丝雀(灰度)先放量小比例验证大版本、高风险变更
重新创建停旧起新非关键内部系统
选型建议—默认滚动,高风险用灰度
最常见的是环境差异(依赖版本、Node/Python 版本不一致)和配置外泄(密钥写在代码里)。解决思路:容器化 + 环境变量/密钥管理 + 锁定依赖版本。
建议从小规模自动化开始:用 Git 钩子或轻量流水线做"提交即构建+部署测试环境",成本低收益高,随着项目长大再逐步增加灰度与回滚能力。
按业务量预估:初创期 2 核 4G 起步,配合云数据库与对象存储;流量上来后再通过 CDN、负载均衡和弹性伸缩扩容,避免一次性买大配置浪费预算。
三条路:回滚到上一稳定版本(K8s rollout undo / 镜像版本回退)、热修复补丁快速再发布、切流量到旧环境(蓝绿)。关键是发布前就准备好回滚预案并演练过。
放项目仓库(如 deploy/ 目录)随代码版本管理,用声明式描述(Dockerfile、docker-compose.yml、K8s YAML)+ 少量编排脚本;生产环境优先走流水线而非手动执行。
数据库与文件数据放持久化存储(云盘/PV),应用层做无状态设计;部署前自动备份、迁移前做数据校验,发布窗口选低峰并保留回滚点。

不想自己折腾部署?我们来落地

编程新知提供服务器选型、环境搭建、Nginx/HTTPS、Docker 部署与监控告警一站式部署服务,让网站稳定上线。