Jenkins将服务部署到ECS中
目录一、ECS的介绍二、服务部署到ECS中三、“Jenkins 流水线 → ECS”后半段四、三种常见落地形态一、ECS的介绍ECSElastic Compute Service云服务器是阿里云的弹性计算服务本质是云上的虚拟机用来部署和运行应用。按需租一台或一批云主机选配置、装系统、跑业务按量或包年包月计费。核心能力计算资源CPU、内存、GPU 等可按规格选择存储系统盘、数据盘如云盘网络 VPC 私网、公网 IP、安全组防火墙弹性随时升降配、开机关机、做快照备份镜像用公共镜像或自定义镜像快速开出相同环境常见用途跑网站、API、微服务部署中间件Nginx、Redis、数据库等生产库也常单独用云数据库作为 MSE、SLB 等背后的实际业务机器ECS 里常见组成部分实例Instance真正的那台云主机有 CPU、内存、操作系统。镜像Image系统模板如 CentOS、Ubuntu、Alibaba Cloud Linux、Windows。注意这里的“镜像”是装系统的盘不一定等于 Docker 镜像。云盘系统盘 数据盘可扩容、可快照备份。网络专有网络 VPC公网 IP / EIP是否能被外网访问安全组防火墙规则开 22、80、443 等规格如 2核4G、4核8G决定性能和价格。ECS 上服务怎么跑常见几种直接跑进程装 JDK/Node用systemd托管java -jar app.jar。Nginx 应用Nginx 反代到后端端口。机器上装 Docker/Podman仍用容器但不走 K8s只用单机/多机容器。前面加负载均衡 SLB多台 ECS 一起对外提供服务。和 Jenkins 的关系Jenkins 构建产物→ SSH/Ansible 连到 ECS→ 传包或拉镜像→ 重启服务→ 健康检查所以 ECS 是运行环境落地机器Jenkins 是自动化流水线。二、服务部署到ECS中要部署到 ECS云主机本质是换成打到一台/多台 Linux 机器上跑Jenkins 仍然负责编排落地方式要变。1、和 K8s 部署的区别K8sECS交付物镜像 Deployment/Helm包jar/war、镜像或直接覆盖目录目标API Server / kubectlSSH、Ansible、云厂商部署工具扩缩容Deployment/HPA自己管机器或挂负载均衡配置/密钥ConfigMap/Secret环境变量、配置文件、密钥管理健康检查Probesystemd / nginx / 脚本探活Jenkins 还是流水线调度器变的是最后一公里怎么上机器。2、需要准备的东西1ECS 环境安全组放行SSH22 或自定义、业务端口80/443/应用端口安装运行时JDK / Node / Python或 Docker若仍用镜像建议用systemd管进程便于启停和开机自启2Jenkins 到 ECS 的连通SSH 密钥推荐或账号密码放进 Jenkins「凭据」固定跳板机/堡垒机时流水线要走跳板3部署方式选型三选一即可方式适合说明A. 直接部署包传统 jar/warscp 远程systemctl restartB. ECS 上跑 Docker想保留镜像习惯机器装 Docker/Podman拉镜像docker run/composeC. Ansible多台 ECS、要标准化Jenkins 调 Ansible Playbook你之前问过很合适3、Jenkins 流水线通常要改什么K8s 常见后半段build image → push registry → kubectl/helm applyECS 常见后半段改成build 产物/镜像 → 传到 ECS或 ECS 拉取→ 停旧服务 → 替换 → 启动 → 健康检查1示例 部署 jar 到 ECSSSHstage(Deploy to ECS) { steps { sshagent(credentials: [ecs-ssh-key]) { sh scp target/app.jar userecs-ip:/opt/app/app.jar ssh userecs-ip sudo systemctl restart myapp curl -fsS http://127.0.0.1:8080/health } } }2示例 ECS 上用 Docker仍打镜像stage(Deploy to ECS) { steps { sshagent(credentials: [ecs-ssh-key]) { sh ssh userecs-ip docker pull registry.example.com/app:${GIT_COMMIT} docker stop app || true docker rm app || true docker run -d --name app -p 8080:8080 registry.example.com/app:${GIT_COMMIT} } } }3示例 Jenkins Ansible多台更稳Jenkins: build → ansible-playbook -i inventory deploy.ymlAnsible: 拷贝文件、改配置、重启服务、做检查4、上 ECS 时建议补齐的能力版本回滚保留上一版包/镜像标签失败一键切回健康检查部署后curl探活失败则标红并回滚配置分离环境配置别打进包用文件或环境变量权限最小化Jenkins 只用部署账号不要 root 长期登录多台 ECS前面加 SLB/NginxAnsible 滚动更新避免全挂日志与监控机器上 journald/filebeat或云监控告警三、“Jenkins 流水线 → ECS”后半段一条完整流水线[前半段] Checkout → Build → Test → Package/Image[后半段] Publish → Stop → Replace → Start → Health Check → Rollback?后半段目标只有一个把新版本安全、可回退地落到 ECS 上并确认可用。1. 构建产物 / 镜像后半段的输入后半段不负责“怎么编译”只消费前半段产物常见两种类型产物后续怎么到 ECS传统包app.jar/dist.zipscp/rsync上传容器registry/app:tagECS 上docker pull/podman pull建议产物带版本号例如app-1.2.3.jarapp:20260722-abc1234日期 Git commit方便回滚和排查。2. 传到 ECS或 ECS 拉取方式 AJenkins 推上去Push适合 jar/静态资源scp target/app.jar deployecs:/opt/app/releases/app-1.2.3.jar # 或 rsync -avz dist/ deployecs:/opt/app/share/优点逻辑集中在 Jenkins。注意大文件、多机会比较慢。方式 BECS 自己拉Pull适合镜像ssh deployecs docker pull registry.example.com/app:abc1234或 ECS 从 OSS/Nexus 下载包。优点机器多时更自然也更贴近 K8s“拉镜像”习惯。Jenkins 里这一步通常是sshagentsh scp/ssh ...凭据用 SSH 私钥。3. 停旧服务替换文件前先停进程避免文件被占用、出现“半新半旧”。ssh deployecs sudo systemctl stop myapp # Docker 场景 ssh deployecs docker stop myapp || true要点最好有超时避免卡死优雅停止优先给应用收尾时间多实例时不要同时全停滚动更新4. 替换新版本把“当前运行版本”切到新产物。1systemd jar 示例ln -sfn /opt/app/releases/app-1.2.3.jar /opt/app/current/app.jar # 或直接覆盖不如版本目录软链清晰推荐目录结构/opt/app/ releases/app-1.2.2.jar releases/app-1.2.3.jar current - releases/app-1.2.3.jar2Docker 示例docker rm myapp || true docker run -d --name myapp -p 8080:8080 registry/app:abc1234替换阶段还常包含改配置、换.env、更新 nginx 反代按需。5. 启动新服务sudo systemctl start myapp # 或 docker start myapp / docker run ...建议同时systemctl is-active myapp看最近日志journalctl -u myapp -n 100启动成功 ≠ 业务可用所以必须有下一步。6. 健康检查最关键确认进程起来并且接口真的通。# 在 ECS 本机检查 curl -fsS http://127.0.0.1:8080/health # 或检查首页/登录接口 curl -fsS -o /dev/null -w %{http_code} http://127.0.0.1:8080/常见策略重试 1030 次每隔 25 秒超时仍失败 → 流水线标红 → 触发回滚有 SLB 时再检查负载均衡后端是否健康没有健康检查的部署等于“发布成功但服务可能已挂”。7. 失败回滚强烈建议任一步失败尤其健康检查失败应自动回到上一版本切回旧软链 / 旧镜像 tag→ 启动旧服务→ 再做一次健康检查→ 通知人工示例思路ln -sfn /opt/app/releases/app-1.2.2.jar /opt/app/current/app.jar systemctl restart myapp curl -fsS http://127.0.0.1:8080/healthDocker 则重新run上一个 tag。串成 Jenkins Pipeline 后半段示意stage(Publish) { steps { sshagent(credentials: [ecs-ssh-key]) { sh scp target/app.jar deploy${ECS_IP}:/opt/app/releases/app-${VERSION}.jar } } } stage(Deploy) { steps { sshagent(credentials: [ecs-ssh-key]) { sh ssh deploy${ECS_IP} set -e sudo systemctl stop myapp ln -sfn /opt/app/releases/app-${VERSION}.jar /opt/app/current/app.jar sudo systemctl start myapp } } } stage(Health Check) { steps { sshagent(credentials: [ecs-ssh-key]) { sh ssh deploy${ECS_IP} for i in $(seq 1 20); do if curl -fsS http://127.0.0.1:8080/health; then echo OK; exit 0 fi sleep 3 done echo FAIL; exit 1 } } } post { failure { // 这里调用回滚脚本 echo 部署失败执行回滚 } }和 K8s 后半段的对照步骤K8sECS分发推镜像仓库节点拉取scp/rsync 或 docker pull切换版本kubectl apply/ 改 image tag换文件软链 / 换容器停旧启新Deployment 滚动更新systemctl/docker 自己控健康检查readiness/livenesscurl/脚本/云监控回滚kubectl rollout undo切回旧包/旧镜像K8s 很多能力“内置”ECS 要把这些步骤在流水线或 Ansible 里显式写出来。四、三种常见落地形态1、SSH 脚本型单机、起步快Jenkins 直接scpssh命令。2、Docker on ECS常用后半段几乎是pull → stop → run → health。3、Ansible 型多机、要规范Jenkins 只调ansible-playbook停服/替换/启服/检查都在 Playbook 里。实战注意点权限用deploy账号 有限 sudo不要整条流水线 root。幂等重复执行不应把环境弄乱stop || true、ln -sfn。并发同一服务不要两条流水线同时部署。配置与代码分离配置放 ECS 或配置中心别每次把密钥打进包。可观测每次部署记下版本号、时间、操作人、构建号。

相关新闻

从浏览器到事务码,读懂 SAP S/4HANA 的统一系统访问体系

从浏览器到事务码,读懂 SAP S/4HANA 的统一系统访问体系

早上八点半,采购专员打开浏览器,在 SAP Fiori Launchpad 的待办卡片里看到三张采购订单等待审批。财务同事仍然习惯从 SAP GUI 进入总账事务,开发人员则在 SAP Business Client 里一边运行经典事务,一边检查新的 SAP Fiori 应用。 三个人访问的是同一套 SAP S/4HANA 业务系…

2026/10/16 8:26:12 阅读更多 →
AI如何重构本科毕业论文写作流程与质量提升

AI如何重构本科毕业论文写作流程与质量提升

1. 论文写作新范式:AI如何重构本科毕业论文生产流程 本科毕业论文对于大多数学生而言,都是场煎熬的持久战。从选题开题到文献综述,从数据收集到格式调整,每个环节都充满挑战。而Paperzz AI这类工具的出现,正在彻底改变…

2026/10/16 8:42:40 阅读更多 →
嵌入式事件管理器:硬件级协同与低功耗设计实战

嵌入式事件管理器:硬件级协同与低功耗设计实战

1. 事件管理器:嵌入式系统高效协同的“神经中枢”在嵌入式开发,尤其是对实时性和功耗有严苛要求的应用中,如何让各个外设模块高效、自主地协同工作,同时让CPU从频繁的轮询和简单的中断处理中解放出来,是一个核心挑战。…

2026/10/16 2:40:01 阅读更多 →

最新新闻

Lokinet多平台部署实战:Windows、Linux、MacOS完整安装教程

Lokinet多平台部署实战:Windows、Linux、MacOS完整安装教程

Lokinet多平台部署实战:Windows、Linux、MacOS完整安装教程 Lokinet是一个匿名、去中心化且基于IP的互联网覆盖网络,让用户能够在保护隐私的同时安全地访问互联网。本教程将详细介绍如何在Windows、Linux和MacOS三大主流操作系统上部署Lokinet&#xff…

2026/10/17 1:48:27 阅读更多 →
软考 系统架构设计师历年真题集萃(154)

软考 系统架构设计师历年真题集萃(154)

接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(153) 第291题 EJB是企业级Java构件,用于开发和部署结构的、分布式的、面向对象的Java应用。其中,()负责完成服务端与客户端的交互;()用于数据持久化来简化数据库开发工作;()主要用来处理并发和异步访问操作…

2026/10/17 1:48:27 阅读更多 →
就地型馈线自动化技术原则与整定避坑指南:四种模式详解

就地型馈线自动化技术原则与整定避坑指南:四种模式详解

简介:这份名为《附件8:就地型馈线自动化技术原则(试行)》的技术文档,系统阐述了自适应综合型馈线自动化技术,面向配电网规划运行、自动化改造及运维检修人员,重点解决多分支多联络配电网中故障定…

2026/10/17 1:48:27 阅读更多 →
Spark-X2.5 全面解析:4B 参数 + 1M 上下文 + 200 语言,端侧 Agent 模型新王如何炼成

Spark-X2.5 全面解析:4B 参数 + 1M 上下文 + 200 语言,端侧 Agent 模型新王如何炼成

【免费下载链接】Spark-X2.5-4B-FP8 项目地址: https://ai.gitcode.com/SparkLLM/Spark-X2.5-4B-FP8 点击查看 免费下载 Spark-X2.5-4B-FP8 是一款面向端侧部署的 4B 参数大语言模型,原生支持 1M token 上下文窗口和 200 多种语言,主打 Agen…

2026/10/17 1:48:27 阅读更多 →
CKEditor 4 在 iOS 移动端工具栏按钮 Hover 样式的正确修复与手动验收测试指南

CKEditor 4 在 iOS 移动端工具栏按钮 Hover 样式的正确修复与手动验收测试指南

前端UI组件 【免费下载链接】ckeditor4 The best enterprise-grade WYSIWYG editor. Fully customizable with countless features and plugins. 项目地址: https://gitcode.com/gh_mirrors/ck/ckeditor4 点击查看 免费下载 导读 本文基于 CKEditor 4 官方仓库中的…

2026/10/17 1:48:27 阅读更多 →
云上运维系统学习路线:VPC、Terraform与K8s实操指南

云上运维系统学习路线:VPC、Terraform与K8s实操指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 1:47:27 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →