Dockerfile
常用指令说明
指令 说明 示例
FROM 基础镜像 FROM node:18-alpine
WORKDIR 工作目录 WORKDIR /app
COPY 复制文件 COPY . .
RUN 执行命令 RUN npm install
EXPOSE 暴露端口 EXPOSE 3000
CMD 容器启动命令 CMD ["node", "app.js"]
ENV 环境变量 ENV NODE_ENV=production
Node.js应用示例
# 使用官方Node.js运行时作为基础镜像
FROM node:18-alpine

# 设置工作目录
WORKDIR /app

# 复制package文件
COPY package*.json ./

# 安装依赖
RUN npm ci --only=production

# 复制应用代码
COPY . .

# 创建非root用户
RUN addgroup -g 1001 -S nodejs
RUN adduser -S nextjs -u 1001

# 更改文件所有者
RUN chown -R nextjs:nodejs /app
USER nextjs

# 暴露端口
EXPOSE 3000

# 健康检查
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
  CMD curl -f http://localhost:3000/health || exit 1

# 启动应用
CMD ["node", "server.js"]
多阶段构建示例
# 构建阶段
FROM node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

# 生产阶段
FROM node:18-alpine AS production
WORKDIR /app
ENV NODE_ENV=production
COPY package*.json ./
RUN npm ci --only=production
COPY --from=builder /app/dist ./dist
EXPOSE 3000
CMD ["node", "dist/main.js"]
多阶段构建优势
  • 减小最终镜像体积
  • 分离构建依赖和运行依赖
  • 提高安全性(不包含构建工具)