Dockerfile 编写速查表
Dockerfile 是定义 Docker 镜像的文本文件,整理常用指令和最佳实践,快速编写高效镜像。
返回 容器与编排基础指令 6
FROM node:18-alpine指定基础镜像
WORKDIR /app设置工作目录
COPY package*.json ./复制文件到容器
RUN npm ci执行命令构建镜像层
EXPOSE 3000声明容器端口
CMD ["node", "app.js"]容器启动命令
环境变量与参数 3
ENV NODE_ENV=production设置环境变量
ARG VERSION=1.0构建时参数
LABEL maintainer="email@example.com"添加镜像元数据
多阶段构建 3
FROM node:18 AS builder命名构建阶段
FROM node:18-alpine最终镜像用更小基础
COPY --from=builder /app/dist ./dist从构建阶段复制产物
优化技巧 3
COPY package*.json ./ && RUN npm ci先复制依赖文件,利用缓存
RUN apk add --no-cache curlAlpine 安装包不缓存
.dockerignore排除不需要构建的文件
💡 提示
- 每条 RUN/COPY/ADD 指令都会创建新层,尽量合并命令减少层数。
- 多阶段构建可以大幅减小最终镜像体积,适合编译型语言。
- 使用 .dockerignore 排除 node_modules、.git 等不需要构建的文件。
- CMD 和 ENTRYPOINT 区别:CMD 可被覆盖,ENTRYPOINT 是固定的。