我如何使用 AWS App Runner 自动化我的第一个 Node.js 应用部署

发布: (2026年1月16日 GMT+8 02:42)
6 min read
原文: Dev.to

Source: Dev.to

Bayo Ogundele

Source:

介绍

作为刚刚踏入 DevOps云部署 的新人,我想给自己一个挑战:能否以 可重复、 高效且无需管理服务器 的方式自动化部署一个 Node.js 应用?

经过一番实验,我构建了一个小项目,恰好演示了上述目标,我将在这里分享我的整个过程、所使用的工具以及一路上学到的经验。

🎯 目标

我的目标很简单:

  • 构建一个 Node.js 应用程序
  • 将其打包到容器中
  • 推送到镜像仓库
  • 使用无服务器服务自动部署

听起来在理论上很简单——但作为初学者,我在此过程中不得不学习大量关于 容器、镜像仓库和部署服务 的知识。

🛠️ 我使用的工具以及原因

1. Node.js

因为我已经熟悉 JavaScript,Node.js 成为我应用的显而易见的选择。它轻量、易于设置,并且在云平台上得到广泛支持。

原因: 开发速度快,易于容器化,非常适合小型 Web 应用。

2. Docker

Docker 让我能够 将我的应用及其依赖打包进容器,从而保证在任何环境下都能以相同方式运行。

原因: 环境一致性以及与 AWS App Runner 的无缝集成。

Docker Image Build

3. AWS Elastic Container Registry (ECR)

ECR 是 AWS 的容器镜像仓库,类似 Docker Hub,但与 AWS 深度集成。我使用它来 存储我的 Docker 镜像,随后再进行部署。

原因: 与 AWS App Runner 完美集成,简化了身份验证流程。

Pushed Image Placeholder 1
Pushed Image Placeholder 2

4. AWS App Runner

这是我第一次真正使用无服务器部署服务。App Runner 让你 在无需关心服务器的情况下部署容器化应用,它会自动处理扩容、HTTPS 和负载均衡。

原因: 消除运维负担,非常适合想专注于应用本身而非基础设施的初学者。

5. Shell 脚本 (deploy.sh)

为了自动化部署,我编写了一个小脚本,构建 Docker 镜像、推送到 ECR 并触发 App Runner 部署

原因: 自动化重复性任务,降低人为错误的可能性。

提示: 即使是初学者,编写这些脚本也能帮助更好地理解整个工作流。

⚙️ 工作原理

下面是我构建的部署流水线的简化概览:

  1. 在本地开发 Node.js 应用
  2. 使用 Docker 将应用容器化
  3. 将 Docker 镜像推送到 AWS ECR
  4. 触发 AWS App Runner 部署新镜像
  5. App Runner 自动托管并扩展应用

虽然我对部署流水线还很新,但有了这套工作流,更新我的应用就像运行一个脚本一样简单。

Deployment Pipeline

🚧 我作为初学者面临的挑战

  • Docker 认证问题 – 学习 AWS ECR 登录方式时经历了多次尝试和错误。
  • 理解 App Runner 概念 – 起初,我不确定服务、镜像和部署之间是如何关联的。
  • 自动化脚本编写 – 编写一个能够处理错误并一次性运行的脚本相当棘手。

尽管遇到这些挑战,我仍学到了很多关于 容器化、云托管和部署流水线 的知识。

📚 我学到的

  • Automation saves time: 编写部署脚本比手动操作快得多。
  • Serverless hosting is beginner‑friendly: App Runner 抽象了复杂的服务器管理。
  • Step‑by‑step learning works best: 我从一个小的 Node.js 应用开始,逐步添加 Docker、ECR 和 App Runner。

🚀 下一步

现在我已经有了一个可工作的部署流水线,我的改进计划包括:

  • 探索使用 GitHub Actions 进行 CI/CD 集成 – 在代码推送到仓库时自动构建和部署。
  • 添加环境变量和密钥管理 – 使流水线在不同环境下更安全、更灵活。
  • 部署更复杂的应用

推荐

测试工作流时使用更大、包含多个服务的应用,以获得更深入的经验。

💡 最终思考

即使是初学者,构建此项目也让我对云部署和 DevOps 工作流充满信心。

如果你也刚开始,我强烈建议尝试:

  • 容器化应用 – 学习如何在不同环境中一致地打包和运行应用程序。
  • 无服务器部署 – 将注意力放在你的应用上,而不是管理基础设施。

这既具有教育意义又令人满意,并为你在 DevOps 和云工程领域的成长奠定坚实基础。

Back to Blog

相关文章

阅读更多 »

我对 GitHub Actions 痛恨至深

!Alexander Przemysław Kamińskihttps://media2.dev.to/dynamic/image/width=50,height=50,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3...