# 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
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
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
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
2
# 最佳实践
- 优先使用体积小的基础镜像(如
alpine) - 锁定依赖安装方式(
npm ci) - 分层优化:先复制 lock 文件再安装依赖
- 敏感信息不要写进镜像(用环境变量或 secrets)