使用Docker构建Node.js应用的详细指南

image.png

引言

Docker平台允许开发者将应用程序打包并运行为容器。容器是一个在共享操作系统上运行的隔离进程,提供了一种比虚拟机更轻量级的替代方案。尽管容器并不是新事物,但它们提供的好处——包括进程隔离和环境标准化——随着越来越多的开发者使用分布式应用程序架构,这些好处的重要性日益增加。

在本教程中,你将为一个使用Express框架和Bootstrap的静态网站创建应用程序镜像。然后,你将使用该镜像构建一个容器,并将其推送到Docker Hub以备将来使用。最后,你将从你的Docker Hub仓库中拉取存储的镜像,并构建另一个容器,演示你如何重现和扩展你的应用程序。

前提条件

要遵循本教程,你将需要:

需要一个已设置的Ubuntu服务器,具有非root用户,具有sudo权限,并启用了防火墙以阻止非必要的端口。

设置完成后,以的非root用户身份登录并进行第一步。

建议使用至少有以下配置的服务器:

4 核心的 CPU,4GB 的内存

选择服务器提供商
为了本教程的演示,我将以一个具体的云服务提供商为例,展示如何进行操作。选择哪个提供商根据个人偏好和需求来决定。

雨云注册链接:https://www.rainyun.com/NTE2NDM3_?s=blog

以下步骤仅供参考,请根据实际需求选择配置。
获得5折优惠券:NTE2NDM3

购买云服务器
本示例中,我们选择了香港作为服务器区域。

点击 云产品云服务器立即购买

https://syxoss.oss-cn-hangzhou.aliyuncs.com/Typora202411211020032.png

选择操作系统
在创建服务器实例时,选择 Ubuntu 作为操作系统。

https://syxoss.oss-cn-hangzhou.aliyuncs.com/Typora202411211020498.png

连接到服务器
使用 X-shell 或偏好的 SSH 客户端,通过远程用户名和密码连接到服务器。成功连接后,将看到特定的欢迎信息,表明已成功登录。

https://syxoss.oss-cn-hangzhou.aliyuncs.com/Typora202411211021991.png

https://syxoss.oss-cn-hangzhou.aliyuncs.com/Typora202411210947807.png

  • 在你的服务器上安装了Docker
  • 安装了Node.js和npm
  • 一个Docker Hub账户
使用Docker构建NodeJS应用程序的步骤
  1. 安装应用程序依赖项
  2. 创建NodeJS应用程序文件
  3. 编写Dockerfile
  4. 创建DockerHub镜像仓库

第1步 — 安装你的应用程序依赖项

要创建你的镜像,你首先需要制作你的应用程序文件,然后你可以将它们复制到你的容器中。这些文件将包括你的应用程序的静态内容、代码和依赖项。

首先,在你的非root用户的主目录中为你的项目创建一个目录。我们将我们的项目目录命名为node_project,但你可以用其他名称替换:

mkdir node_project

导航到这个目录:

cd node_project

这将是项目的根目录。

接下来,创建一个package.json文件,包含你的项目依赖项和其他识别信息。用nano或你喜欢的编辑器打开文件:

nano package.json

添加以下关于项目的信息,包括它的名称、作者、许可证、入口点和依赖项。确保将作者信息替换为你自己的姓名和联系详情:

~/node_project/package.json

{
  "name": "nodejs-image-demo",
  "version": "1.0.0",
  "description": "nodejs image demo",
  "author": "Sammy the Shark <sammy@example.com>",
  "license": "MIT",
  "main": "app.js",
  "keywords": [
    "nodejs",
    "bootstrap",
    "express"
  ],
  "dependencies": {
    "express": "^4.16.4"
  }
}

这个文件包括了项目名称、作者和共享许可证。npm建议使你的项目名称简短且描述性,并避免在npm注册表中重复。我们在许可证字段中列出了MIT许可证,允许自由使用和分发应用程序代码。

此外,文件指定了:

  • "main": 应用程序的入口点,app.js。你将在下一步创建这个文件。
  • "dependencies": 项目依赖项——在这种情况下,是Express 4.16.4或更高版本。

尽管这个文件没有列出仓库,你可以通过遵循这些指南将仓库添加到你的package.json文件中。如果你正在对应用程序进行版本控制,这是一个好的补充。

完成更改后保存并关闭文件。

要安装项目依赖项,请运行以下命令:

npm install

这将在你的项目目录中安装你在package.json文件中列出的包。

现在我们可以继续构建应用程序文件。

第2步 — 创建应用程序文件

我们将创建一个网站,为用户提供有关鲨鱼的信息。我们的应用程序将有一个主入口点app.js,以及一个views目录,其中将包括项目的静态资产。登陆页面index.html将为用户提供一些初步信息和一个链接到更详细的鲨鱼信息页面sharks.html。在views目录中,我们将创建登陆页面和sharks.html

首先,在主项目目录中打开app.js定义项目的路由:

nano app.js

文件的第一部分将创建Express应用程序和Router对象,并定义基目录和端口作为常量:

~/node_project/app.js

const express = require('express');
const app = express();
const router = express.Router();

const path = __dirname + '/views/';
const port = 8080;

require函数加载了express模块,然后我们用它来创建approuter对象。router对象将执行应用程序的路由功能,我们定义HTTP方法路由时,将它们添加到这个对象中,以定义我们的应用程序如何处理请求。

这部分文件还设置了两个常量,pathport

  • path: 定义了基目录,它将是当前项目目录中的views子目录。
  • port: 告诉应用程序监听并绑定到端口8080

接下来,使用router对象设置应用程序的路由:

~/node_project/app.js

...

router.use(function (req,res,next) {
  console.log('/' + req.method);
  next();
});

router.get('/', function(req,res){
  res.sendFile(path + 'index.html');
});

router.get('
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值