下面按从简单到规范的方式,说明如何把 Debian + Node.js 应用 容器化(以 Docker 为例)。
假设项目结构:
myapp/
├── package.json
├── index.js
└── ...
# 使用 Debian 官方镜像
FROM debian:12
# 设置环境变量(避免交互式安装)
ENV DEBIAN_FRONTEND=noninteractive
# 安装 Node.js(来自 NodeSource)
RUN apt-get update && \
apt-get install -y curl && \
curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
apt-get install -y nodejs && \
apt-get clean && rm -rf /var/lib/apt/lists/*
# 创建工作目录
WORKDIR /app
# 拷贝项目文件
COPY package*.json ./
RUN npm install --production
COPY . .
# 暴露端口
EXPOSE 3000
# 启动应用
CMD ["node", "index.js"]
docker build -t my-debian-node-app .
docker run -p 3000:3000 my-debian-node-app
如果你必须用 Debian,但想更小一点:
FROM debian:12-slim
slim 版本体积小很多,适合生产。
⚠️ 实际生产中更推荐直接用 Node 官方镜像(基于 Debian):
FROM node:20-bookworm # Debian 12
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .
EXPOSE 3000
CMD ["node", "index.js"]
✅ 优点:
version: "3.8"
services:
app:
build: .
ports:
- "3000:3000"
restart: always
docker-compose up -d
✅ 使用 .dockerignore
node_modules
npm-debug.log
.git
✅ 非 root 运行(进阶)
RUN useradd -m appuser
USER appuser
✅ 生产环境加 --production
imagemagick, ffmpeg, python)如果你愿意,可以告诉我:
我可以帮你写完全定制化的 Dockerfile。