集成 MongoDB 的 Dockerized Node.js 应用程序:部署到 AWS ECR
Docker 彻底改变了开发人员构建、部署和管理应用程序的方式。凭借其容器化技术,Docker 为跨平台运行应用程序提供了一致且可靠的环境。
该项目专注于利用 Docker 开发和部署一个与 MongoDB 无缝交互的 Node.js 应用程序。目标是通过从 DockerHub 拉取 MongoDB 的 Docker 镜像并将其连接到 Node.js 应用程序来创建本地开发环境。连接成功后,系统会进行验证,以确保应用程序能够有效地与 MongoDB 数据库交互。
接下来,该项目旨在使用 Docker 将 Node.js 应用程序容器化,并创建自定义 Docker 镜像。该镜像将包含必要的依赖项和配置,以确保应用程序平稳运行。之后,该 Docker 镜像将被推送到 AWS ECR(Elastic Container Registry)私有存储库,以便安全地存储和管理镜像。
让我们开始吧!
先决条件:
在开始之前,请确保您已具备以下条件:
-
设置您的 AWS 账户。
-
完成 Amazon ECR 设置步骤。您可以找到有关如何设置 Amazon ECR 的信息。
-
您使用的用户应具有访问和使用 Amazon ECR 的 IAM 权限。要了解更多信息,请参阅
-
在您的机器上安装 Docker。
-
设置已安装并配置的 AWS CLI。
-
下载或克隆此存储库上的启动项目并初始化应用程序。
将 Node.Js 应用程序与 MongoDB 连接
现在我们已经整理好了先决条件,接下来就可以将 Node.JS 应用程序连接到 MongoDB Atlas 数据库了。使用适用于 Node.JS 的 MongoDB 驱动程序(例如 Mongoose)以及我们之前创建的 MongoDB 数据库的连接字符串,我们可以与数据库建立无缝连接。通过在 Node.JS 应用程序中配置连接参数,我们可以确保应用程序能够与 MongoDB 容器通信。
为此,请访问已创建的数据库并单击“连接”:
在“连接到集群”页面上,选择“驱动程序”选项:
这将带您进入使用 MongoDB 驱动程序连接页面,导航到第三步“将您的连接字符串添加到您的应用程序代码中”并复制连接字符串:
mongodb+srv://<username>:<password>@cluster0.ujj4x8j.mongodb.net/?retryWrites=true&w=majority
现在是时候将 MongoDB 连接字符串粘贴到克隆到本地系统的 Node.JS 中了。让我们找到名为“ db ”的目录并打开“ connection.js ”文件:
找到变量 MONGO_URL 并将其值更新为您的连接字符串:
import mongoose from "mongoose";
const MONGO_URL = "mongodb+srv://username:password@cluster0.ujj4x8j.mongodb.net/?retryWrites=true&w=majority";
const connect = async () => {
try {
await mongoose.connect(MONGO_URL , {
useNewUrlParser : true,
useUnifiedTopology : true
});
console.log("Connected to db");
} catch (error) {
throw error
}
}
mongoose.connection.on("disconnected" , () => {
console.log("db disconnected");
})
export default connect;
现在是时候通过使用 docker-compose 启动我们的应用程序来测试我们的连接了:
docker compose up --build
如果您看到以下结果,那么您就可以开始了:
接下来的事情是使用 localhost:8000 在 Web 浏览器上访问 Node.JS 应用程序,创建一个新用户并从后端确认:
localhost:8000
我们已经启动并运行了应用程序,下一步需要停止运行应用程序的容器。具体操作如下:
docker compose down
将 Docker 镜像推送到 AWS ECR
为了在云平台上部署我们的容器化应用程序,我们将使用 Amazon Elastic Container Registry (ECR),它是 AWS 提供的完全托管的 Docker 容器注册表。在将 Docker 镜像推送到 ECR 之前,我们需要在 ECR 中创建一个私有存储库来存储镜像。
进入AWS控制台,搜索关键字ECR:
单击“开始”按钮:
填写创建存储库表单并创建存储库:
请确认 Private Repository 创建成功:
设置好存储库后,我们可以验证 Docker CLI 以便与 ECR 服务进行交互。只需执行以下几个命令:
- 首先,我们必须使用 docker 在本地构建 Node.JS 应用程序:
docker build -t my-app-biggy-finesse:1.0 .
- 检索身份验证令牌并向镜像仓库验证 Docker 客户端的身份验证。使用 AWS CLI:
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 611512058***.dkr.ecr.us-east-1.amazonaws.com
- 构建和身份验证阶段完成后,标记您的图像,以便您可以将图像推送到此存储库:
docker tag my-app-biggy-finesse:latest 611512058022.dkr.ecr.us-east-1.amazonaws.com/my-app-biggy-finesse:latest
- 确认标签已完成:
docker images
- 运行以下命令将此图像推送到新创建的 AWS 存储库:
docker push 6115120580**.dkr.ecr.us-east-1.amazonaws.com/my-app-biggy-finesse:latest
- 在 AWS 控制台上确认推送已成功完成:
至此我们已经结束了这篇文章,我希望它能够对大家有很大的帮助。
欢迎随时通过Linkedin与我联系。
大家保持健康!!!
文章来源:https://dev.to/oloruntobiolurombi/dockerized-nodejs-application-with-mongodb-integration-deployment-to-aws-ecr-f2h