零基础也能学会:Docker部署Node.js项目完整指南

前置准备


使用 Docker部署Node.js项目 前,需要做好以下准备:



  • 一台安装了 Docker 的服务器(CentOS 7+ 或 Ubuntu 18.04+ 均可)。

  • 一个可以正常运行的 Node.js 项目(比如 Express 应用),确保本地可启动。

  • 知道项目监听端口(如 3000),以及需要的 Node.js 版本(如 18.x)。

  • 服务器已开放对应端口(安全组或防火墙放行)。


如果你还没装 Docker,执行以下命令一键安装(以 CentOS 为例):

curl -fsSL https://get.docker.com | bash
sudo systemctl start docker
sudo systemctl enable docker

分步操作


Step 1:准备项目文件


将你的 Node.js 项目上传到服务器(如 /opt/myapp),确保目录包含 package.jsonapp.js(或 index.js)。


Step 2:编写 Dockerfile


在项目根目录新建文件 Dockerfile,内容如下:


# 使用官方 Node 镜像作为基础
FROM node:18-alpine

设置工作目录

WORKDIR /app

复制 package.json 和 package-lock.json(如果有)

COPY package*.json ./

安装依赖

RUN npm install --production

复制项目所有文件

COPY . .

暴露端口(与项目监听端口一致)

EXPOSE 3000

启动命令

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


Step 3:构建镜像


在项目目录执行:


docker build -t my-node-app .


  • -t 指定镜像名称和标签,这里取名 my-node-app

  • 末尾的 . 表示使用当前目录的 Dockerfile。


Step 4:运行容器


docker run -d -p 80:3000 --name node-server my-node-app


  • -d 后台运行。

  • -p 80:3000 将服务器 80 端口映射到容器内 3000 端口(这样用户访问服务器 IP 即可)。

  • --name 给容器取名方便管理。


如果项目依赖环境变量(如数据库连接),用 -e 传入:


docker run -d -p 80:3000 -e DB_HOST=192.168.1.100 --name node-server my-node-app

Step 5:验证容器状态


docker ps

看到 node-server 状态为 Up 即成功。

然后访问 http://服务器IP,应看到应用界面。


避坑指南



  1. 构建镜像时提示“package.json not found”:检查 Dockerfile 中的 COPY package*.json ./ 路径是否正确,确认文件存在于项目目录。

  2. 运行容器后立即退出:用 docker logs node-server 查看日志,常见原因是端口被占用或应用启动出错(如缺少模块)。

  3. 端口映射不生效:检查服务器防火墙是否开放了映射的主机端口(如 80),并确认安全组已放行。

  4. 容器内时间与服务器不一致:可在运行命令中添加 -e TZ=Asia/Shanghai 指定时区。


高频问题解答


Q1:如何更新项目代码?

修改项目文件后,重新构建镜像并替换旧容器:


# 停止并删除旧容器
docker stop node-server && docker rm node-server

重新构建

docker build -t my-node-app .

重新运行

docker run -d -p 80:3000 --name node-server my-node-app


Q2:如何查看应用日志?

使用 docker logs -f node-server 实时跟踪日志。


Q3:生产环境需要挂载数据卷吗?

如果项目需要持久化存储(如上传文件),推荐挂载数据卷:


docker run -d -p 80:3000 -v /opt/appdata:/app/uploads --name node-server my-node-app

效果验证


完成部署后,通过以下方式确认 Docker部署Node.js项目 成功:



  • 浏览器访问 http://服务器IP,页面正常加载。

  • 终端执行 curl http://localhost:80 返回正常 HTML。

  • 执行 docker stats node-server 查看资源占用,确认容器持续运行。


如果你正在处理 Docker部署Node.js项目,建议先按本文步骤完整执行,再根据自己的环境做微调;

遇到异常时优先回看避坑和高频问题部分。

分享到:
上一篇
WordPress静态化加速实操:缓存插件与服务器配置详解
下一篇
宝塔面板多PHP版本切换,从安装到实战完整教程
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意