失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Node.js web 应用 Docker 化步骤

Node.js web 应用 Docker 化步骤

时间:2023-03-10 05:46:00

相关推荐

Node.js web 应用 Docker 化步骤

小小又开始学习新的内容了。这次学习的是,把一个Node.js 应用封装到Docker容器,完成本教程的前提是拥有一个可以安装的,已经正常可以工作的Docker。以及对Node.js应用如何工作,有一个大致的了解。本教程的第一部分,需要创建一个Web应用程序,然后为这个应用程序构建一个Docker镜像,最后把这个镜像作为容器进行运行。Docker允许应用对依赖进行打包完成一个标准化的单元,这是一个容器,对于应用而言,Docker被称为一个标准的Linux操作系统,一个镜像是进行加载到容器的软件。

创建Node.js应用

首先,需要创建一个package.json文件,以及包含的依赖。

{"name":"docker_web_app","version":"1.0.0","description":"Node.jsonDocker","author":"FirstLast<first.last@>","main":"server.js","scripts":{"start":"nodeserver.js"},"dependencies":{"express":"^4.16.1"}}

然后输入npm install 进行安装相关的依赖。

然后创建一个server.js 文件,创建一个web应用。

"usestrict";constexpress=require("express");//ConstantsconstPORT=8080;constHOST="0.0.0.0";//Appconstapp=express();app.get("/",(req,res)=>{res.send("HelloWorld");});app.listen(PORT,HOST);console.log(`Runningonhttp://${HOST}:${PORT}`);

这样就完成了一个标准的,最简单的web应用。下面将需要创建一个镜像,用于对镜像进行封装。

创建一个 Dockerfile文件

touchDockerfile

打开文件,输入相关的基础镜像

FROMnode:12

创建相关的工作目录

#CreateappdirectoryWORKDIR/usr/src/app

复制相关的包管理文件,并安装相关的依赖

#Installappdependencies#Awildcardisusedtoensurebothpackage.jsonANDpackage-lock.jsonarecopied#whereavailable(npm@5+)COPYpackage*.json./RUNnpminstall#Ifyouarebuildingyourcodeforproduction#RUNnpmci--only=production

复制相关的程序代码

#BundleappsourceCOPY..

绑定相关的端口号

EXPOSE8080

创建持久化的命令,让系统在前台运行。

CMD["node","server.js"]

最后Dockerfile构建如下

FROMnode:12#CreateappdirectoryWORKDIR/usr/src/app#Installappdependencies#Awildcardisusedtoensurebothpackage.jsonANDpackage-lock.jsonarecopied#whereavailable(npm@5+)COPYpackage*.json./RUNnpminstall#Ifyouarebuildingyourcodeforproduction#RUNnpmci--only=production#BundleappsourceCOPY..EXPOSE8080CMD["node","server.js"]

关于dockerignore文件

此文件,是防止复制到相关的文件,例如node_modules 不需要复制到docker镜像内部

node_modulesnpm-debug.log

构建docker镜像

dockerbuild-t<yourusername>/node-web-app.

输入如上的命令,构建docker镜像。最后构建出的docker镜像如下

$dockerimages#ExampleREPOSITORYTAGIDCREATEDnode121934b0b038d15daysago<yourusername>/node-web-applatestd64d3505b0d21minuteago

运行相关镜像

此时镜像已经构建完成,这里需要对镜像进行运行。

dockerrun-p49160:8080-d<yourusername>/node-web-app

需要进入容器,输入如下的命令

#Enterthecontainer$dockerexec-it<containerid>/bin/bash

测试

输入ps,可以看到docker的镜像的详细内容

$dockerps#ExampleIDIMAGECOMMAND...PORTSecce33b30ebf<yourusername>/node-web-app:latestnpmstart...49160->8080

使用curl可以访问网站

$curl-ilocalhost:49160HTTP/1.1200OKX-Powered-By:ExpressContent-Type:text/html;charset=utf-8Content-Length:12ETag:W/"c-M6tWOb/Y57lesdjQuHeB1P/qTV0"Date:Mon,13Nov20:53:59GMTConnection:keep-aliveHelloworld

此时项目已经基本完成。

相关推荐

JavaScript 启动性能瓶颈分析与解决方案

从零看清Node源码createServer和负载均衡整个过程

【项目实战】sass使用进阶篇(下)

【项目实战】sass使用基础篇(上)

最详细的从零开始配置 TypeScript 项目的教程

5 款非常好用的开源 Docker 工具

WebSocket 全面知识补全

7个处理JavaScript值为undefined的技巧

immutablejs 是如何优化我们的代码的?

Chrome 新功能尝鲜!— CSS Overview

又一个布局利器, CSS 伪类 :placeholder-shown

封装一个vue视频播放器组件

对于组件的可重用性,大佬给出来6个建议

学习 TS 不要错过的八个工具

Node 中的全链路式日志标记及处理

使用 Node 开发服务器项目时如何高效地打日志?

用TypeScript学设计模式(享元模式)

用TypeScript学设计模式(模板方法模式)

TypeScript 设计模式之适配器模式

用TypeScript学设计模式(观察者模式)

用TypeScript学设计模式(单例模式)

点在看的人特别帅/美

如果觉得《Node.js web 应用 Docker 化步骤》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。