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/7/24 23:59:34 阅读更多 →
AI如何重构本科毕业论文写作流程与质量提升

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

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

2026/7/24 23:59:34 阅读更多 →
嵌入式事件管理器:硬件级协同与低功耗设计实战

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

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

2026/7/24 23:59:34 阅读更多 →

最新新闻

剪映专业版教程:制作3D环绕相册效果

剪映专业版教程:制作3D环绕相册效果

前言 今天教大家一个3D环绕相册效果。这种效果让图片在3D旋转中切换,配合推进拉近的缩放动画和发条音效,营造出立体环绕的视觉体验。 效果预览:每张图片先以3D环绕屏特效旋转展示,随后拉近放大,配合发条音效模拟机械…

2026/7/25 0:07:37 阅读更多 →
RimSort终极指南:如何用开源模组管理器打造完美《环世界》体验

RimSort终极指南:如何用开源模组管理器打造完美《环世界》体验

RimSort终极指南:如何用开源模组管理器打造完美《环世界》体验 【免费下载链接】RimSort RimSort is an open source mod manager for the video game RimWorld. There is support for Linux, Mac, and Windows, built from the ground up to be a reliable, commun…

2026/7/25 0:07:37 阅读更多 →
如何让小爱音箱变身无限音乐库:XiaoMusic终极指南

如何让小爱音箱变身无限音乐库:XiaoMusic终极指南

如何让小爱音箱变身无限音乐库:XiaoMusic终极指南 【免费下载链接】xiaomusic 使用小爱音箱播放音乐,音乐使用 yt-dlp 下载。 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaomusic 还在为小爱音箱的音乐版权限制而烦恼吗?每…

2026/7/25 0:07:37 阅读更多 →
GetQzonehistory完整指南:5步轻松备份你的QQ空间所有历史记录

GetQzonehistory完整指南:5步轻松备份你的QQ空间所有历史记录

GetQzonehistory完整指南:5步轻松备份你的QQ空间所有历史记录 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 在数字记忆日益珍贵的今天,QQ空间承载了无数人的青…

2026/7/25 0:07:37 阅读更多 →
OpenAI 接口超时重试:我的 Spring Boot 服务如何从 30% 失败率降到 1% 以下

OpenAI 接口超时重试:我的 Spring Boot 服务如何从 30% 失败率降到 1% 以下

Java项目接入大模型API的稳定性优化实战:从30%超时到99%可用 上周为订单审核系统接入GPT-4时,接口超时率始终徘徊在30%左右。经过三天的方案对比,最终通过分级重试策略将稳定性提升到99%以上——这个案例暴露了Java项目裸调大模型API时最容易…

2026/7/25 0:07:37 阅读更多 →
KeymouseGo:5分钟掌握鼠标键盘自动化录制回放实用技巧

KeymouseGo:5分钟掌握鼠标键盘自动化录制回放实用技巧

KeymouseGo:5分钟掌握鼠标键盘自动化录制回放实用技巧 【免费下载链接】KeymouseGo 类似按键精灵的鼠标键盘录制和自动化操作 模拟点击和键入 | automate mouse clicks and keyboard input 项目地址: https://gitcode.com/gh_mirrors/ke/KeymouseGo 你是否每…

2026/7/25 0:06:37 阅读更多 →

日新闻

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的…

2026/7/25 0:00:35 阅读更多 →
C++ string类模拟实现:从深拷贝到内存管理的完整指南

C++ string类模拟实现:从深拷贝到内存管理的完整指南

1. 项目概述:为什么我们要“手撕”string类?在C的学习道路上,尤其是从C语言过渡到C的“初阶”阶段,string类绝对是一个绕不开的核心。标准库里的std::string用起来太方便了,、find、substr,几个操作符和函数…

2026/7/25 0:00:35 阅读更多 →
三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

1. 先搞清楚“三角洲寻宝鼠”到底是什么工具从名称来看,“三角洲寻宝鼠”更像是一个资源查找或文件检索类工具,而不是游戏或娱乐软件。这类工具的核心价值在于帮助用户快速定位特定资源,比如文档、图片、压缩包或特定格式的文件。如果你经常需…

2026/7/25 0:00:35 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻