Docker部署Node.js项目:用 Docker 部署

用 Docker 部署 Node.js 项目,零基础也能轻松上线


很多新手听到“容器化部署”会觉得很难,其实只要掌握几个核心步骤,用 Docker 部署 Node.js 项目比传统方式更省心——不用再纠结环境差异、依赖冲突,一条命令就能跑起来。

本文会从最基础的概念开始,带你走完一个完整的部署流程。


1. 你需要准备的东西


在动手之前,确保你的服务器(或本地电脑)上已经安装了 Docker。

如果你还没装,可以到 Docker 官网 下载对应版本,或者用一行命令安装(以 Ubuntu 为例):


sudo apt update && sudo apt install docker.io -y

安装完成后运行 docker --version,看到版本号就说明成功了。

另外你还需要一个已经写好的 Node.js 项目,里面至少要包含 package.json 和入口文件(比如 app.jsindex.js)。


2. 在项目根目录创建 Dockerfile


Dockerfile 就是一个“说明书”,告诉 Docker 怎么构建你的项目环境。

在项目根目录下新建一个名为 Dockerfile 的文件(注意大小写,没有后缀)。

写入以下内容:


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

设置容器内的工作目录

WORKDIR /app

把 package.json 和 package-lock.json 复制到容器中

COPY package*.json ./

安装项目依赖

RUN npm install --production

把整个项目复制到容器中

COPY . .

暴露项目运行的端口(以 3000 为例)

EXPOSE 3000

启动命令

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


注意: 如果你的入口文件不是 app.js,记得把最后一行改成对应的文件名。


3. 构建镜像与启动容器


在项目目录下打开终端,执行下面两个关键命令:


# 构建镜像,-t 表示给镜像起个名字,后面的点表示当前目录
sudo docker build -t my-node-app .

启动容器,-d 后台运行,-p 把宿主机 3000 端口映射到容器 3000 端口

sudo docker run -d -p 3000:3000 --name my-running-app my-node-app


构建过程可能需要几十秒,看到 Successfully built 就表示镜像创建成功。

运行后,用 sudo docker ps 查看容器状态,如果 STATUS 显示 Up 就说明容器已经起来了。


4. 验证项目是否正常


在浏览器里访问 http://你的服务器IP:3000(如果是本地就访问 http://localhost:3000),如果能正常显示你的 Node.js 页面,说明部署成功。

如果想看实时日志(比如调试接口),可以用:


sudo docker logs -f my-running-app

Ctrl+C 退出日志查看。


5. 避坑指南与高频问题


问题 1:端口被占用怎么办?

修改 -p 参数,比如把宿主机的 3000 改成 3001:-p 3001:3000,然后访问 3001 端口。


问题 2:容器启动了但访问不到?

先检查防火墙是否放行了对应端口,再用 sudo docker exec -it my-running-app sh 进入容器内部,运行 curl http://localhost:3000 确认项目在工作。如果项目依赖数据库(比如 MongoDB),要确保数据库链接地址在容器内能访问(不要用 localhost,改成宿主机 IP 或容器网络名)。


问题 3:每次修改代码都要重新构建吗?

开发阶段你可以用 挂载卷 的方式实时同步代码:


sudo docker run -d -p 3000:3000 -v $(pwd):/app --name my-dev-app my-node-app

这样本地改代码,容器内会自动更新(需要你的 Node.js 支持热重载)。


---


如果你正在处理 Docker 部署 Node.js 项目,建议先按本文步骤完整执行一次,遇到异常时优先回头看“避坑指南”部分。

等你跑通第一个容器后,再研究多容器编排(比如 Docker Compose)就会容易得多。


小提醒:生产环境建议使用 pm2nodemon 管理进程,并搭配 .dockerignore 文件忽略 node_modules.git 等不必要的文件,让构建更快、镜像更小。

分享到:
上一篇
Linux压缩解压命令从入门到实战:tar、gzip、zip
下一篇
零基础搞定服务器CDN加速配置,让网站访问快三倍
1
系统公告

泽御云五一特惠活动🔥

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