容器与编排构建脚本
Dockerfile 是什么?
描述怎么一层层构建镜像的文本文件
类比:菜谱,按步骤做出这道菜(镜像)
核心指令
记住这几条就能写出 90% 的 Dockerfile。
- FROM:基础镜像,尽量选 slim/alpine
- WORKDIR:设置工作目录,避免到处 cd
- COPY:复制文件,比 ADD 更可预测(ADD 会自动解压)
- RUN:构建时执行命令,多条用 && 合并减少层数
- ENV / ARG:环境变量(ARG 只在构建期有效)
- ENTRYPOINT / CMD:启动命令,ENTRYPOINT 固定、CMD 可被覆盖
- EXPOSE:声明端口,只是文档作用
缓存与顺序
层缓存按顺序匹配,任何一层变了,后面的层全部失效。所以要先 COPY 依赖清单(package.json/pom.xml)并安装依赖,再 COPY 源码。
多阶段构建
build 阶段装编译器、打包;运行阶段只 COPY 产物。Java 镜像能从 800MB 降到 200MB,攻击面也小得多。