在轻量应用服务器上如何部署Node.js和Docker环境?

在轻量应用服务器(如阿里云、腾讯云、华为云等提供的轻量级 VPS)上部署 Node.js 和 Docker 环境,通常分为以下步骤。以下以 Ubuntu 20.04/22.04 为例(CentOS 类似,只需调整包管理器命令):


一、基础准备

1. 更新系统

sudo apt update && sudo apt upgrade -y

2. 安装必要工具(可选但推荐)

sudo apt install -y curl git vim htop

二、安装 Node.js

推荐使用 NodeSourcenvm(推荐 nvm,便于版本管理)。

方法 A:使用 nvm(推荐)

# 安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

# 重新加载 shell 配置
source ~/.bashrc

# 安装最新 LTS 版 Node.js
nvm install --lts

# 验证
node -v
npm -v

✅ 优势:可轻松切换多个 Node 版本,避免全局污染。

方法 B:直接安装(适合简单场景)

curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs

三、安装 Docker

1. 卸载旧版本(如有)

sudo apt remove docker docker-engine docker.io containerd runc

2. 安装依赖

sudo apt install -y ca-certificates curl gnupg lsb-release

3. 添加 Docker 官方 GPG 密钥与仓库

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo 
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu 
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

4. 安装 Docker Engine

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

5. 启动并设置开机自启

sudo systemctl enable docker
sudo systemctl start docker

6. (可选)将当前用户加入 docker 组,避免每次用 sudo

sudo usermod -aG docker $USER
# 退出并重新登录,或执行:newgrp docker

7. 验证安装

docker --version
docker run hello-world

四、部署 Node.js 应用(结合 Docker)

方案 A:Docker Compose 部署(推荐生产环境)

在项目根目录创建 docker-compose.yml

version: '3.8'
services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
    restart: unless-stopped

创建 Dockerfile

FROM node:20-alpine

WORKDIR /app

COPY package*.json ./
RUN npm ci --only=production

COPY . .

EXPOSE 3000

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

部署步骤:

docker compose up -d --build

方案 B:直接运行容器(快速测试)

docker build -t my-node-app .
docker run -p 3000:3000 --name my-app my-node-app

五、安全与优化建议

  • 🔒 防火墙:仅开放必要端口(如 3000、22),关闭其他端口。
    sudo ufw allow 3000/tcp
    sudo ufw enable
  • 🔄 自动重启:确保 restart: unless-stopped 已配置。
  • 📦 日志管理:使用 docker logs -f my-app 查看,生产环境建议接入日志收集(如 Loki + Promtail)。
  • 🛡️ HTTPS:生产环境建议搭配 Nginx 反向X_X + Let’s Encrypt 证书。

六、常见问题排查

问题 解决方案
permission denied 运行 docker 检查用户是否在 docker 组,或临时加 sudo
Node 版本不匹配 使用 nvm use <version> 切换
容器无法访问网络 检查 Docker DNS 设置或主机网络策略
内存不足导致 OOM 限制容器资源:mem_limit--memory

如需具体某一步的详细说明(如配置 Nginx 反向X_X、CI/CD 集成等),欢迎继续提问!

未经允许不得转载:CLOUD云枢 » 在轻量应用服务器上如何部署Node.js和Docker环境?