Ubuntu环境下Node.js容器化部署实战指南
时间:2026-08-21 | 作者:宇宙开黑者 | 阅读:0在Ubuntu上部署Node.js应用到容器中,核心就是借助Docker完成标准化打包。这样可以把应用和依赖环境一起封装,减少“在我机器上能跑”的问题。
容器化部署的思路并不复杂。把应用打包成统一单元后,就可以实现走到哪跑到哪。下面是一套经过验证的实操流程,直接照着执行即可。
安装与部署流程
1. 安装Docker
先确认Ubuntu系统已经安装Docker。如果还没有安装,可直接执行下面两行命令:
sudo apt update
sudo apt install docker.io
安装完成后,记得把当前用户加入docker组:
sudo usermod -aG docker $USER
这样可以避免每次执行Docker命令都使用sudo。
2. 创建Node.js应用
如果你已经有现成的Node.js应用,可以直接使用。这里以一个简单的Express服务为例,创建一个app.js:
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});
然后再准备一个package.json。
- 在依赖中写上
express - 执行
npm install
这些属于基础准备工作,这里不再展开。
3. 创建Dockerfile
在应用目录下新建一个Dockerfile。这是整个容器化过程的核心配置文件:
# 使用官方的Node.js基础镜像
FROM node:14
# 设置工作目录
WORKDIR /usr/src/app
# 将package.json和package-lock.json复制到工作目录
COPY package*.json ./
# 安装应用依赖
RUN npm install
# 将应用代码复制到工作目录
COPY . .
# 暴露应用的端口
EXPOSE 3000
# 启动应用
CMD ["node", "app.js"]
这里有一个关键细节:先复制package*.json,再执行npm install。
这样做是为了利用Docker的缓存机制。只要package.json没有变化,依赖安装这一步就不会重复执行,可以节省不少构建时间。
4. 构建Docker镜像
在包含Dockerfile的目录下执行以下命令:
docker build -t my-node-app .
命令最后的点表示当前目录。构建时,Docker会逐行执行Dockerfile中的指令。
如果过程顺利,终端最终会提示镜像构建成功。
5. 运行Docker容器
镜像构建完成后,就可以启动容器:
docker run -p 3000:3000 my-node-app
这条命令会把容器内的3000端口映射到宿主机的3000端口。
完成后,你就可以通过localhost:3000访问这个应用。
6. 验证部署
打开浏览器,访问http://localhost:3000。
如果页面返回“Hello World!”,说明容器化部署已经成功。这也是整个流程是否跑通的直接验证。
可进一步关注的优化方向
完成基础部署后,实际生产环境还可以继续优化。以下几个方向值得重点关注:
- Docker Compose:如果应用依赖数据库、缓存等中间件,用Compose可以把多个容器编排在一起,一键启动,省心很多。
- CI/CD集成:把构建和部署流程接入Jenkins、GitLab CI之类的工具,每次代码提交自动打包镜像、推送仓库、更新容器,这才是真正的自动化。
- 监控与日志:容器跑起来之后,怎么知道它是否健康?用Prometheus+Grafana做监控,用ELK Stack收集日志,这些都是标配。
总结
容器化部署的本质就是“一次构建,到处运行”。
这套流程本身并不复杂,但它是后续所有复杂容器化方案(Kubernetes、服务网格等)的基础。对于需要长期维护Node.js服务的场景,这套方法值得反复练习并熟练掌握。
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- Ubuntu下使用Git管理Swagger项目的完整指南
- 时间:2026-08-31
-
- Ubuntu下GIMP滤镜使用全指南:从基础操作到批量处理
- 时间:2026-08-31
-
- Ubuntu下使用Telnet进行远程管理的完整指南
- 时间:2026-08-31
-
- Ubuntu中如何查看磁盘I/O对CPU的影响:cpustat替代方案
- 时间:2026-08-31
-
- Ubuntu系统使用cpustat查看多核CPU信息的方法
- 时间:2026-08-31
-
- Ubuntu中Rust日志系统配置指南
- 时间:2026-08-27
-
- Ubuntu下Rust集成第三方库完整指南
- 时间:2026-08-27
-
- Ubuntu下Rust跨平台开发:从环境搭建到自动化测试指南
- 时间:2026-08-27
精选合集
更多大家都在玩
大家都在看
更多-
- 糖尿病完全不能吃糖吗
- 时间:2026-09-15
-
- 蚂蚁庄园小课堂2026年9月16日最新题目答案
- 时间:2026-09-15
-
- 小鸡答题今天的答案是什么2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园每日答题答案2026年9月16日
- 时间:2026-09-15
-
- 以下哪种粮食是酿造绍兴黄酒的主要原料 蚂蚁庄园今日答案9月16日
- 时间:2026-09-15
-
- 劝学名句“及时当勉励,岁月不待人”出自哪位诗人 蚂蚁庄园今日答案9.16
- 时间:2026-09-15
-
- 蚂蚁庄园今天答题答案2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园答题今日答案2026年9月16日
- 时间:2026-09-15
