容器化技术已经成为现代应用部署的标准方式。Docker 让应用的构建、分发和运行变得简单可靠。
Dockerfile 最佳实践
多阶段构建
使用多阶段构建可以显著减小镜像体积:
# 构建阶段
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# 运行阶段
FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/.next ./.next
COPY --from=builder /app/public ./public
COPY --from=builder /app/package*.json ./
RUN npm ci --production
EXPOSE 3000
CMD ["npm", "start"]
镜像优化
- 使用 Alpine 基础镜像
- 合并 RUN 指令减少层数
- 利用 .dockerignore 排除不必要文件
- 合理利用构建缓存
Docker Compose
对于多服务应用,Docker Compose 提供了简洁的编排方式。
健康检查
配置健康检查确保容器处于可用状态。
日志管理
- 应用日志输出到 stdout/stderr
- 使用日志驱动收集日志
- 配置日志轮转避免磁盘占满
总结
容器化不仅简化了部署流程,也让应用的可移植性和一致性得到了保障。