当前位置: 首页 > news >正文

Docker 容器化部署 Node.js 详细手册

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,它打破了传统浏览器对 JavaScript 的限制,允许开发者使用 JavaScript 编写服务器端代码。其核心特点是采用非阻塞、事件驱动的 I/O 模型,非常适合构建高性能、高并发的网络应用,如 API 服务、实时通信应用、微服务等。

Node.js 拥有全球最大的开源库生态系统之一——npm(Node Package Manager),提供了超过 200 万个可复用的包,能极大提升开发效率。无论是前端工程化工具(如 Webpack、Vite),还是后端服务开发,Node.js 都占据着重要地位。

为什么用 Docker 部署 Node.js?

Docker 是一种轻量级容器化技术,使用 Docker 部署 Node.js 应用能带来诸多优势:

  1.  环境一致性:Docker 容器封装了应用运行所需的全部依赖(Node.js 版本、npm 包、系统库等),确保应用在开发、测试、生产环境中表现一致,彻底解决"在我电脑上能运行"的经典问题。

  2.  隔离性:容器之间相互隔离,不同 Node.js 应用(甚至不同版本的 Node.js)可以在同一台服务器上独立运行,避免依赖冲突和资源抢占。

  3.  快速部署与扩展:Docker 镜像可快速分发和启动,配合编排工具(如 Docker Compose、Kubernetes),能实现 Node.js 应用的秒级启停和弹性扩展。

  4.  版本控制:Docker 镜像支持版本标签管理,可轻松回滚到历史版本,便于应用迭代和问题排查。

  5.  资源高效:相比传统虚拟机,容器共享宿主机内核,启动更快、占用资源更少,能在有限服务器资源上部署更多 Node.js 应用。

🧰 准备工作

若你的系统尚未安装 Docker,请先一键安装:

Linux Docker & Docker Compose 一键安装

一键安装配置脚本(推荐方案):
该脚本支持多种 Linux 发行版,支持一键安装 Docker、Docker Compose 并自动配置轩辕镜像加速源。

bash <(wget -qO- https://xuanyuan.cloud/docker.sh)

1、查看 Node.js 镜像详情

你可以在 轩辕镜像 中找到 Node.js 镜像页面:
👉 https://xuanyuan.cloud/r/library/node

在镜像页面中,你会看到多种拉取方式,下面我们逐一说明如何部署。

2、下载 Node.js 镜像

2.1 使用轩辕镜像登录验证的方式拉取

docker pull docker.xuanyuan.run/library/node:latest

2.2 拉取后改名

docker pull docker.xuanyuan.run/library/node:latest \
&& docker tag docker.xuanyuan.run/library/node:latest library/node:latest \
&& docker rmi docker.xuanyuan.run/library/node:latest

说明

  • docker pull:从轩辕镜像加速拉取镜像

  • docker tag:将镜像重命名为官方标准名称 library/node:latest,后续运行命令更简洁

  • docker rmi:删除临时镜像标签,避免占用额外存储空间

2.3 使用免登录方式拉取(推荐)

基础拉取命令:
docker pull xxx.xuanyuan.run/library/node:latest
带重命名的完整命令:
docker pull xxx.xuanyuan.run/library/node:latest \
&& docker tag xxx.xuanyuan.run/library/node:latest library/node:latest \
&& docker rmi xxx.xuanyuan.run/library/node:latest

2.4 官方直连方式

若网络可直连 Docker Hub,或已配置轩辕镜像加速器,可直接拉取官方镜像:

docker pull library/node:latest

2.5 查看镜像是否拉取成功

docker images

输出示例

REPOSITORY          TAG       IMAGE ID       CREATED        SIZE
library/node        latest    7b1f3ef4f4e8   3 weeks ago    155MB

3、部署 Node.js

以下基于 library/node:latest 镜像,提供三种部署方案,可根据场景选择。

3.1 快速运行(最简方式)

适合测试或临时运行:

第一步:编写测试脚本
mkdir -p /data/node && cd /data/node
echo "console.log('Hello from Xuanyuan Node.js!')" > app.js
第二步:运行 Node 容器
docker run -it --rm \-v /data/node:/usr/src/app \-w /usr/src/app \library/node:latest \node app.js

输出结果

Hello from Xuanyuan Node.js!

核心参数说明

  •  -v /data/node:/usr/src/app:挂载宿主机目录到容器,方便代码修改

  •  -w /usr/src/app:指定容器内的工作目录

  •  --rm:容器退出后自动删除,避免产生无用容器

3.2 启动 Node Web 应用(推荐方式)

适合实际项目部署,通过 Node.js 提供 HTTP 服务。

第一步:准备项目代码
mkdir -p /data/node-web && cd /data/node-web

新建 server.js

// 简单的 Node.js Web 服务
const http = require('http');
const PORT = 3000;http.createServer((req, res) => {res.writeHead(200, {'Content-Type': 'text/plain'});res.end('Hello from Xuanyuan Node.js Server!\n');
}).listen(PORT);console.log(`Server running at http://0.0.0.0:${PORT}/`);
第二步:运行容器并映射端口
docker run -d --name node-web \-p 3000:3000 \-v /data/node-web:/usr/src/app \-w /usr/src/app \library/node:latest \node server.js

验证方式
浏览器访问 http://服务器IP:3000,应显示:

Hello from Xuanyuan Node.js Server!

3.3 docker-compose 部署(企业级推荐)

使用 docker-compose.yml 管理容器配置。

第一步:编写 docker-compose.yml
version: '3'
services:node:image: library/node:latestcontainer_name: node-serviceworking_dir: /usr/src/appvolumes:- ./app:/usr/src/appports:- "3000:3000"command: node server.jsrestart: always
第二步:准备应用目录
mkdir -p app && cd app

server.js 内容同 3.2 中的 server.js

第三步:启动服务
docker compose up -d

4、结果验证

浏览器访问

打开 http://服务器IP:3000,应显示 Hello from Xuanyuan Node.js Server!

查看容器状态

docker ps

STATUS 列显示 Up 说明运行正常

查看日志

docker logs node-web

输出 Server running at http://0.0.0.0:3000/ 说明启动成功

5、常见问题

5.1 为什么访问不到服务?

排查方向

  •  端口未放行:检查服务器安全组、防火墙是否开放 3000 端口

  •  宿主机端口冲突:若 3000 被占用,可改用 -p 8080:3000

5.2 如何安装依赖?

进入容器执行 npm install

docker exec -it node-web npm install express

或者在 docker-compose.yml 中预置 command: npm install && node server.js

5.3 如何启用热更新?

使用 nodemon

docker exec -it node-web npm install -g nodemon
docker exec -it node-web nodemon server.js

5.4 如何指定 Node.js 版本?

拉取指定标签镜像,例如:

docker pull library/node:18
docker pull library/node:20

5.5 容器内时区不正确?

运行时加上:

-e TZ=Asia/Shanghai

结尾

至此,你已掌握基于 轩辕镜像 的 Node.js 镜像拉取与 Docker 部署全流程。

  •  初学者:可以先用 快速运行,体验 Node.js 容器化开发。

  •  实际项目:推荐 挂载目录 或 docker-compose,便于管理依赖与配置。

  •  高级工程师:可基于本文继续扩展 CI/CD、PM2 进程守护、Kubernetes 部署等高级场景。

http://www.dtcms.com/a/495087.html

相关文章:

  • 浅析cef在win和mac上的适配
  • 营销型网站一般有哪些内容珠海公司网站建设
  • PHP 空指针引用:潜藏在运行时的
  • Android 中 Padding 与 Margin 的深度解析:从概念到实战区分
  • 关于dtoj 177 谐振之石的一些反思
  • UniverSheets最新版本测试
  • JD-Eclipse 插件核心功能与安装指南
  • kafka与zero-copy
  • 上海建站模板平台做外贸网站渠道
  • QT-常用控件(多元素控件)
  • MFC + OpenCV 图像预览显示不全中断问题解决:GDI行填充详解
  • 家庭农场做网站网站排名做不上去
  • LWIP通讯之PHY芯片LAN8720引脚详解
  • YOLOv3 :目标检测的经典融合与创新
  • 数值计算-线性方程组的迭代解法
  • win设置
  • 基于波动率自适应的ETF动态止盈止损模型构建与优化
  • C++ 继承笔记
  • H20裸金属租赁:捷智算安全隔离,独立配置保障数据安全
  • 装饰公司怎么做网站建设asp网站视频教程
  • 商业综合体 BAS 楼宇自控系统 + 能效管理系统:双系统协同打造高效低碳运营标杆
  • sm2025 模拟赛22 (2025.10.17)
  • 矢量图形AI 2025软件百度网盘下载与安装步骤分享
  • 建筑公司网站作用支付商城网站制作
  • 多模态文档理解视觉token剪枝思路
  • 本文讲解什么是PD诱骗协议以及如何避免充电器功率不足导致充电器不充电问题
  • 洛谷 - 线段树详解 1 (超详细版)
  • uni-app 入门学习教程,从入门到精通,uni-app基础扩展 —— 详细知识点与案例(3)
  • 解决uniapp中showLoading与showToast相互覆盖问题
  • 网站建设的外国文献三星网上商城怎么取消订单