在轻量应用服务器(如阿里云、腾讯云、华为云等提供的轻量级 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
推荐使用 NodeSource 或 nvm(推荐 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云枢