# Dockerfile

# 什么是 Dockerfile

Dockerfile 是镜像构建脚本,按行执行指令,最终产出一个镜像。

# 常用指令

  • FROM:基础镜像
  • WORKDIR:工作目录
  • COPY:复制文件到镜像
  • RUN:构建时执行命令
  • ENV:设置环境变量
  • EXPOSE:声明容器监听端口
  • CMD:容器启动默认命令

# Node 项目示例

FROM node:20-alpine

WORKDIR /app

COPY package*.json ./
RUN npm install --production

COPY . .

EXPOSE 3000

CMD ["node", "app.js"]
1
2
3
4
5
6
7
8
9
10
11
12

# 多阶段构建(推荐)

适用于前端工程或 TS 工程,能显著减小最终镜像体积。

# build 阶段
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

# runtime 阶段
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY --from=builder /app/dist ./dist
EXPOSE 3000
CMD ["node", "dist/index.js"]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# .dockerignore 建议

避免把无关文件打进镜像:

node_modules
dist
.git
.DS_Store
npm-debug.log
1
2
3
4
5

# 构建与运行

docker build -t demo-node:1.0 .
docker run -d --name demo-node -p 3000:3000 demo-node:1.0
1
2

# 最佳实践

  • 优先使用体积小的基础镜像(如 alpine)
  • 锁定依赖安装方式(npm ci)
  • 分层优化:先复制 lock 文件再安装依赖
  • 敏感信息不要写进镜像(用环境变量或 secrets)