Dockerfile 是构建镜像的核心脚本,它定义了容器的运行环境、依赖、启动方式等内容
本章将深入讲解 Dockerfile 的高级指令、构建优化技巧以及多阶段构建的实战应用,帮助你构建更高效、更安全的镜像
一个基础的 Dockerfile 示例:
DockerfileFROM node:18 WORKDIR /app COPY . . RUN npm install CMD ["npm", "start"]
| 指令 | 说明 |
|---|---|
FROM | 指定基础镜像 |
RUN | 执行命令(如安装依赖) |
COPY / ADD | 拷贝文件到镜像中 |
WORKDIR | 设置工作目录 |
CMD / ENTRYPOINT | 设置容器启动命令 |
ENV | 设置环境变量 |
EXPOSE | 声明端口(仅文档作用) |
VOLUME | 声明挂载点 |
LABEL | 添加元数据 |
将多个命令合并为一条:
DockerfileRUN apt-get update && apt-get install -y curl git
将不常变动的步骤放前面:
DockerfileCOPY package.json . RUN npm install COPY . .
.dockerignore忽略无关文件,加快构建速度:
node_modules .git *.log
用于构建与运行环境分离,减小镜像体积:
Dockerfile# 构建阶段 FROM node:18 AS builder WORKDIR /app COPY . . RUN npm install && npm run build # 运行阶段 FROM nginx:alpine COPY --from=builder /app/dist /usr/share/nginx/html
优势:
latest 标签,锁定版本DockerfileFROM node:18-alpine WORKDIR /app COPY package*.json ./ RUN npm ci --only=production COPY . . EXPOSE 3000 CMD ["node", "index.js"]
构建并运行:
bashdocker build -t mynodeapp . docker run -d -p 3000:3000 mynodeapp
Dockerfile 是连接开发与部署的桥梁
通过合理使用指令、优化构建流程、采用多阶段构建,便可以打造出高效、可维护的镜像结构


本文作者:AsZero
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!