Docker部署node:手把手教你用Docker部署

为什么选择用Docker部署Node.js

很多新手在部署Node.js应用时,常常遇到环境不一致、依赖冲突、服务器配置复杂等问题。Docker能把这些烦恼一次性解决:把你的Node.js应用连同运行环境一起打包成一个镜像,在任何安装了Docker的服务器上都能一键运行。
下面我带你完整走一遍Docker部署node的流程,保证每一步都能落地。

准备工作:安装Docker并准备一个Node项目

在动手之前,你得确认服务器已经安装了Docker。
如果没装,用下面这条命令(以CentOS为例,Ubuntu类似):

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker

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

接着准备一个简单的Node.js应用。
假设你在服务器上有个文件夹/opt/myapp,里面已经有一个app.js(比如一个Express服务器)和package.json。
如果还没有,快速建一个示例:

mkdir -p /opt/myapp && cd /opt/myapp
npm init -y
npm install express --save

然后创建app.js,内容如下:

const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
  res.send('Hello from Docker!');
});

app.listen(port, () => {
  console.log(`App listening at http://localhost:${port}`);
});

项目已经有了,下面就来写Docker的核心文件——Dockerfile。

编写Dockerfile:把Node应用装进镜像

在项目根目录/opt/myapp下新建一个文件,就叫Dockerfile(注意没有后缀)。
用文本编辑器写入以下内容:

# 指定基础镜像,这里用官方Node 18-alpine,体积小
FROM node:18-alpine

# 设置容器内工作目录
WORKDIR /app

# 复制package.json和package-lock.json(如果有),先安装依赖,利用缓存
COPY package*.json ./
RUN npm install --production

# 复制项目所有文件
COPY . .

# 暴露应用的端口(对应Express监听端口3000)
EXPOSE 3000

# 启动命令
CMD ["node", "app.js"]

几点说明:

  • COPY package*.json ./然后RUN npm install再COPY . .的顺序可以充分利用Docker镜像分层缓存,以后只改代码不改依赖时,构建会快很多。
  • 用--production只装生产依赖,减小镜像体积。
  • EXPOSE 3000只是声明,真正映射端口要在运行容器时做。

构建镜像并运行容器

1. 构建镜像

在/opt/myapp目录下执行:

docker build -t my-node-app .

-t给镜像取名my-node-app,最后的.是上下文路径,别漏了。
构建过程会逐行执行Dockerfile里的指令,稍等一会儿就能看到Successfully built。

2. 运行容器

构建成功后,用以下命令启动容器:

docker run -d -p 8080:3000 --name my-node-container my-node-app

参数解释:

  • -d后台运行。
  • -p 8080:3000把宿主机8080端口映射到容器内3000端口,这样访问服务器IP:8080就能看到应用。
  • --name给容器命名。
  • my-node-app是镜像名称。

运行后可以用docker ps确认容器处于Up状态。

3. 测试效果

在服务器上或者浏览器里访问http://服务器IP:8080,应该能看到Hello from Docker!。
如果想看容器日志,用docker logs my-node-container。

常见问题与避坑

问题1:端口被占用
如果-p 8080:3000提示端口冲突,换一个宿主端口,比如-p 8081:3000,同时记得在云服务器安全组放行新端口。

问题2:构建时npm install报错

检查网络,有时npm官方源慢,可以在Dockerfile里换源:

RUN npm config set registry https://registry.npmmirror.com && npm install --production

问题3:容器启动后立即停止

先看日志docker logs 容器名,常见原因是app.js里端口写错或者缺少依赖。
确保Dockerfile中的CMD命令正确,且WORKDIR路径下的文件齐全。

问题4:文件修改后如何更新

重新构建镜像再运行新容器:

docker build -t my-node-app .
docker stop my-node-container
docker rm my-node-container
docker run -d -p 8080:3000 --name my-node-container my-node-app

如果想保留数据,可以考虑挂载卷,但新手阶段先理解基础流程。

总结

通过以上步骤,你已经掌握了Docker部署node的核心操作:安装Docker、准备项目、编写Dockerfile、构建镜像、运行容器,以及常见问题的排查思路。
建议你亲自在服务器上敲一遍,遇到异常优先回顾“避坑”部分。
之后还可以尝试用docker-compose管理多个服务,但那是进阶内容了。
如果有其他问题,欢迎在评论区留言。

分享到:
上一篇
轻松搞定WordPress网站SEO内链优化,零基础也能操作
下一篇
服务器API服务器搭建实战:宝塔面板+Node.js部署
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意