Docker化你的Node.js应用程序

2025-05-26

Docker化你的Node.js应用程序

通过这个简短易懂的分步教程,学习如何使用代码块将 Node 应用程序 Docker 化。立即尝试!

Docker 彻底改变了我们构建、打包和交付软件的方式。Docker 使开发人员能够打包他们的应用程序并与他人共享。正是由于 Docker,我们现在看到了云计算的诸多进步。许多新兴初创公司都以 Docker 技术为基础。此外,Docker 还通过弥合开发和运营团队之间的差距,增强了 DevOps 方法。今天,我们将通过一个简单的教程,演示如何构建一个简单的“Hello World”应用程序,并对其进行 Docker 化。

先决条件:

教程

创建应用程序

创建一个目录来存储你的应用程序和依赖项。你可以选择任何你想要的名称。我选择的名称是“expapp”。

mkdir expapp

使用命令初始化应用程序npm init -y。这将创建包含依赖项的package.json文件,以及应用程序的名称和描述。

{
 "name": "expapp",
 "version": "1.0.0",
 "description": "",
 "main": "index.js",
 "scripts": {
   "test": "mocha"
 },
 "keywords": [],
 "author": "",
 "license": "ISC",
}
Enter fullscreen mode Exit fullscreen mode

我们将通过在项目的根目录上运行以下命令将 Express 框架添加为依赖项。

npm install express --save

添加此依赖项后,您可以返回并检查package.json文件。现在它应该已经列出了 express 依赖项。

{
 "name": "expapp",
 "version": "1.0.0",
 "description": "",
 "main": "index.js",
 "scripts": {
   "test": "mocha"
 },
 "keywords": [],
 "author": "",
 "license": "ISC",
 "dependencies": {
   "express": "^4.17.3"
 }
}
Enter fullscreen mode Exit fullscreen mode

添加 express 作为依赖项后,您应该会在主目录中看到另外两个文件:package-lock.json和 node_modules。由于这不是本教程的目的,因此我们不会详细介绍。如果您想了解更多信息,可以阅读本入门指南。

现在,是时候将我们的主要代码添加到app.js文件中了。

创建一个名为app.js的文件并添加以下代码:

const express = require('express');

const app = express();
const PORT = process.env.PORT || 3002;

app.get('/', (request, response) => {
 response.status(200).json({
   message: 'Hello Docker!',
 });
});

app.listen(PORT, () => {
 console.log(`Server is up on localhost:${PORT}`);
});
Enter fullscreen mode Exit fullscreen mode

在上面的文件中,我们正在配置应用程序——基本上就是使 express 成为必需的依赖项,并让应用程序启动服务器并监听 3002 端口的连接。对于根 URL (/) 或路由的请求,应用程序会返回{“message”: “Hello Docker!”}。对于其他路径,它将返回 404 Not Found 错误。

我们的简单应用程序已经准备好了。现在,我们可以运行它来测试它是否正常工作。运行该命令,当你访问http://localhost:3002/node app.js,你应该会看到下面的输出。

本地主机

创建 Dockerfile

让我们创建一个 Dockerfile 来制作应用程序的镜像。转到应用程序的根目录,创建一个名为“ Dockerfile ”的文件,并向其中添加以下代码。

FROM node:14-alpine AS development
ENV NODE_ENV development
# Add a work directory
WORKDIR /app
# Cache and Install dependencies
COPY package.json .
RUN npm install
# Copy app files
COPY . .
# Expose port
EXPOSE 3002
# Start the app
CMD [ "node", "app.js" ]
Enter fullscreen mode Exit fullscreen mode

在 Dockerfile 中,我们使用 Node:14-alpine 作为图像的模板。

将容器中的工作目录设置为 /app。我们将使用此目录存储文件、运行 npm 并启动我们的应用程序,并公开端口 3002 供应用程序运行。

最后,最后一行指定我们的应用程序将如何启动。

可选:创建一个 .dockerignore 文件,以防止本地模块和日志被复制到 Docker 镜像中。请在 .dockerignore 文件中
提及以下两项:node_modulesnpm-debug.log 。

构建应用程序的图像

将文件保存到根目录后,让我们使用刚刚编写的 Dockerfile 构建一个镜像。这可以通过以下 Docker build 命令完成。

docker build -t express-app .
-t 参数用于设置 Docker 镜像的名称。
我将镜像命名为 exp-app。您可以随意命名 :)
命令成功运行后,您应该使用以下命令验证构建的镜像docker images

使用 dockerfile 构建

启动容器

图像已构建!现在是时候使用以下命令启动具有分配端口的 Docker 容器了:
docker run -p 3002:3002 express-app

推送至 Docker Hub

现在,让我们将此镜像推送到我们的 Docker Hub。确保您已从终端登录到 Docker Hub。您可以使用以下命令执行此操作docker login

您需要使用 Docker Hub 凭据重新构建镜像。
docker build -t [USERNAME]/express-app .
请在上方指定的字段中添加您的用户名,这是您的 Docker Hub 用户名。

使用 Docker Hub 凭据构建它后,使用命令将其推送到 Docker Hubdocker push [USERNAME]/express-app.

你应该会看到一个新的镜像被推送到你的 Docker Hub。你可以前往 Docker Hub 仪表板进行验证:

Docker 中心

太棒了!现在,您可以在任何地方使用此镜像。与您的同事分享,减少在他们的机器上重建镜像的时间和精力。

通过运行以下命令验证我们是否已将正确的映像推送到 Docker Hub:
docker run [USERNAME]/express-app

您应该看到应用程序在指定端口上运行,并显示以下输出:

输出

通过访问http://localhost:3002/进行检查。

你好,Docker

您离成为 Docker Pro 又近了一步!恭喜!您创建了一个应用程序,构建了该应用程序的映像,并将其推送到 Docker Hub 容器注册表 Hub。

不喜欢从博客文章中复制粘贴代码块?您可以在此应用程序的GitHub 存储库中查看所有代码。

您已经了解如何构建一个简单的应用程序并将其 Docker 化,下一步就是将此应用程序部署到云端。出于各种原因,我们将考虑使用 Kubernetes 作为部署此应用程序的平台。在下一篇教程中,我们将讨论如何将 Node.js 应用程序部署到 Kubernetes。您可以使用Harness 平台轻松地实现持续交付和部署的自动化。

线束 CD

我还将在本系列教程中向您展示如何做到这一点。

文章来源:https://dev.to/pavanbelagatti/dockerizing-your-nodejs-application-1o17
PREV
拥抱脸 101:绝对初学者的教程!
NEXT
2024 年每位云工程师都应该了解的 7 种编程语言!