如何在Docker上构建Node.js应用程序
Docker是什么?
Docker是一个免费的开源开发平台,允许开发人员在容器中开发和部署其应用程序。
容器带有自己的库和框架,并使应用程序可以在与主机操作系统隔离的环境中进行开发。
本教程将指导您如何在Docker上构建Node.js应用程序的过程。
那么,为什么要在docker上构建应用程序呢?
工作环境的一致性。
在任何阶段,该应用程序将以相同的方式为所有开发人员和客户端运行。
无论是在开发,分阶段还是在生产中。Docker容器如先前指出的那样,将运送自己的库和框架。
容器化消除了手动安装库和依赖项的需要。
您可以启动功能齐全的完整开发环境,以准备部署应用程序。
现在,让我们深入了解如何在Docker上构建Node.js应用程序。
前提条件
- 系统上已安装Docker
- NPM
步骤1:创建Node.js应用程序
第一步是创建一个Node.JS应用程序。
创建一个新目录并进入该目录。
$mkdir nodejs-app && cd nodejs-app
接下来,使用npm(NodeJS Package Manager)初始化目录。
这将创建一个" package.json"文件,该文件将处理应用程序的依赖项。
$npm init
系统将提示您输入应用程序的详细信息,例如名称,版本,描述等。
如果您希望保留默认值,则可以决定指定赢得的首选详细信息,只需按Enter。
在提示的末尾,键入"是"以接受更改。
接下来,运行
$npm install express –save
这将快速框架添加为第一个依赖项
步骤2.为Node.js应用程序创建文件
我们将为Node.Js应用程序创建3个文件。
- index.js
- index.html
- about.html
对于" index.js"文件,添加以下内容。
const express = require('express') const app = express() app.get('/', ( req, res ) => { res.sendFile(`${__dirname}/index.html`) }) app.get('/about', (req, res) => { res.sendFile(`${__dirname}/about.html`) }) app.listen(3000, () => { console.log('Listening on port 3000!') })
上面的文件为侦听端口3000的" index.html"和" about.html"页面创建了2条路由。
对于index.html
文件,添加一些测试内容,如图所示。
对于" about.html"页面,添加以下内容。
我们的Node.JS应用程序现在可以启动了。
步骤3:运行Node.JS应用程序
要运行该应用程序,请运行以下命令
$node index.js
现在,打开浏览器并通过输入URL进入" index.html"页面,如下所示
https://ip-address:3000
要访问about.html页面,请在网址末尾附加/about
https://ip-address:3000/about
第4步:Docker化Node.JS应用程序
接下来,您将在容器内定义一个工作环境。
这个工作环境包括依赖项,预安装的应用程序和库,仅举几例。
与VM相比,该容器并不随整个操作系统一起提供。
它仅提供依赖项,应用程序和配置文件,因此与普通虚拟机相比,它更加轻巧,快速且资源友好。
但是,与VM相反,该容器无法容纳整个操作系统-仅包含应用程序,依赖项和配置。
这使得Docker容器比常规VM更加轻巧和快速。
在应用程序目录中创建文件dockerfile
$touch dockerfile
添加以下内容
FROM node:carbon WORKDIR /usr/src/app COPY package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD ["node", "index.js"]
第一行表示我们使用了最新的节点版本来构建镜像。
第二行创建了目录"/usr/src/app",用于将应用程序代码保存在镜像中。
第三和第四行复制" package.json"文件并运行" npm install"命令
COPY指令将我们的应用程序捆绑在Docker镜像中,因此在我们的案例中是我们HTML文件和index.js文件。
EXPOSE指令公开了我们的应用程序使用的3000端口。
最后,CMD指令指定了启动我们的应用程序需要运行的命令。
步骤5.构建Node.JS应用程序
现在创建了dockerfile,让我们使用以下命令构建应用。
请注意结尾处有空格和句号。
$docker build -t node-app .
-t使您可以标记docker镜像。
在此示例中,我们已将docker镜像标记为node-app
。
验证应用程序是否存在运行
$docker images
步骤6.运行docker容器
现在我们可以启动容器
# docker run -p 8080:3000 -d node-app
这会将应用程序重定向为通过端口8080(而不是端口3000)打开。
步骤7.将应用程序推送到Docker中心
最后一步是将节点应用程序共享到docker hub,人们可以其中访问它并下载其镜像。
为此,请确保您在`https://hub.docker.com上拥有一个帐户。
接下来,使用所示的Docker Hub凭据再次构建镜像。
# docker build -t [USERNAME]/tag .
在我们的例子中,命令将是
# docker build -t winnieondara/node-app .
其中用户名=> winnieondara图片标签=> node-app
接下来,使用您的凭据在终端上登录docker
# docker login
最后,将镜像推送到docker hub
# docker push winnieondara/node-app
恭喜你!现在,登录到您的docker帐户,并确保找到所示的Node.JS应用程序镜像。