Dockerfile 校验Dockerfile Linter
粘贴 Dockerfile,一键完成语法检查与最佳实践审查,逐行定位问题并给出修复建议。内容全程不上传。
工具介绍
3 段详细说明Dockerfile 校验是面向开发者的一站式 Dockerfile 审查工具,集语法检查与最佳实践审查于一体。粘贴 Dockerfile 一键扫描:指令拼写、参数数量、exec 形式 JSON、多阶段引用、镜像版本固定、apt 缓存清理等问题逐行定位,每条问题都附带修复建议。
所有解析都在浏览器内存中完成,内容不上传任何服务器。内置 18 条指令的完整语法规则与十余项社区最佳实践(源自 Docker 官方文档与 hadolint 等主流 linter 的共识),零依赖、零打包。
相比本地安装 hadolint / buildkit,本工具无需安装、打开网页即用,适合 CI 流水线外的人工审查、代码评审与学习 Dockerfile 规范。支持 ⌘+↵ 快捷键执行、校验报告一键复制。
基础知识 · Dockerfile 核心指令
18 条指令 · 6 组要点Dockerfile 是逐行执行的镜像构建脚本,每条指令占一层。掌握以下 6 组核心要点,即可覆盖日常 90% 的编写场景,也是本工具检查规则的主要来源:
FROM基础镜像 · 必须首条FROM(之前只能有 ARG 与注释)。固定版本:node:20-alpine 优于裸 node(默认拉 latest,构建不可复现);scratch 表示从零开始。多阶段写法:FROM golang:1.22 AS build。RUN构建期执行 · 每层一条RUN 在镜像中生成一层。多个命令用 && 串进同一层可减少层数;apt-get update 必须与 install 同层,并在层内 rm -rf /var/lib/apt/lists/* 清缓存,否则缓存永远留在镜像里。CMD vs ENTRYPOINT容器启动命令ENTRYPOINT 是固定入口,CMD 提供默认参数、可被 docker run … 后的参数整体覆盖。两者都推荐 exec 形式:["npm", "start"] —— 必须是合法 JSON 字符串数组(双引号、不能有注释),shell 形式(不带方括号)则经 /bin/sh -c 包装。COPY vs ADD复制文件 · 优先 COPYCOPY src dst 行为简单可预测;ADD 额外支持本地 tar 自动解压与远程 URL 下载,行为隐式。官方建议:能用 COPY 就不用 ADD,仅解压 tar 或下载场景保留 ADD。两者至少需要「1 个源 + 1 个目标」。ENV vs ARG环境变量 vs 构建参数ARG 只在构建期有效(可在 FROM 前声明、供 FROM 引用),不进入最终镜像;ENV 持久化到镜像、运行时可读。推荐 key=value 形式:ENV NODE_ENV=production;空格分隔的旧写法会把后面所有内容当成 value。USER / EXPOSE / HEALTHCHECK运行时画像三件套USER appuser 末尾声明非 root 运行用户,降低逃逸风险;EXPOSE 3000 声明监听端口(文档性质,供 -P 与工具识别);HEALTHCHECK CMD curl -f http://localhost:3000/ || exit 1 让编排系统感知假死。三者共同构成容器的运行时画像。FROM golang:1.22 AS build —— 第一阶段装全套编译工具链,产出二进制。FROM alpine:3.19 —— 第二阶段只包含运行时,镜像从 800 MB 缩到 20 MB。COPY --from=build /app/server /usr/local/bin/ —— 用 --from=<阶段名>(或阶段序号 --from=0)把构建产物拷进最终镜像。docker build --target <阶段> 可只构建到某个阶段;校验工具会检查阶段名重复与 --from 引用是否存在。使用说明
4 步快速入门使用场景
5 个真实案例docker build 报错看不懂时,粘贴 Dockerfile 定位指令拼写、参数缺失与 exec JSON 格式问题。
检查 apt 缓存未清理、ADD 误用、推荐包未裁剪等体积杀手,一份报告指明可省的空间。
PR 中涉及 Dockerfile 改动时,先跑一遍校验再人工评审,把低级问题挡在合并之前。
发现 latest 标签、root 运行、缺 HEALTHCHECK 等风险项,逐项加固后复检确认。
教学区覆盖核心指令语法与多阶段构建模式,新手对照示例理解每条规则背后的原因。
常见问题
10 个问答Dockerfile 校验是什么?有什么用?
在不真正执行 docker build 的前提下,静态检查 Dockerfile 的指令语法与常见最佳实践。能提前发现拼写错误、参数缺失、JSON exec 形式写错等构建失败原因,以及镜像膨胀、root 运行等隐患。
我的 Dockerfile 内容会上传到服务器吗?
不会。所有解析在浏览器内存中完成,输入内容不上传任何服务器。可断网使用、关闭网络后再打开仍能正常使用。
和 hadolint 有什么区别?
hadolint 需要本地安装(Haskell 二进制),规则更细(如 shellcheck 集成)。本工具覆盖最常用的语法错误与十余项核心最佳实践,零安装、行级定位、每条附修复建议,适合快速人工审查与教学场景。
「错误 / 警告 / 提示」三类怎么理解?
错误:会导致 docker build 失败或行为明显异常,必须修复。警告:能构建但存在可复现性差、镜像膨胀等问题,强烈建议修复。提示:属于官方推荐的加分项(如 HEALTHCHECK、非 root 用户),按需采纳。
最佳实践检查能关掉吗?
可以。工具栏的「最佳实践」切到「关」即只做纯语法检查,适合临时调试或仅想确认能构建成功的场景。开关变化时会自动重新校验。
支持多阶段构建吗?
支持。会正确统计多个 FROM 阶段、识别阶段命名与重复命名,并校验 COPY --from=<阶段> 的引用是否存在,包括阶段序号写法 --from=0。
续行符(反斜杠)是怎么处理的?
工具会把以奇数个 \ 结尾的行与下一行合并为一条逻辑指令再检查,问题统一标注在起始行号上。这也是排查「指令不认识」报错的第一步——多数是续行符多写、少写导致。
能检查 .dockerignore 或 docker-compose.yml 吗?
本工具只针对 Dockerfile 语法。YAML 编排文件可先用「YAML⇋JSON」工具转换校验;.dockerignore 按行匹配规则较简单,可人工核对。
移动端能用吗?
支持。移动端输入/结果自动垂直堆叠,操作按钮自适应布局。手机上可粘贴微信 / 飞书里收到的 Dockerfile 片段快速检查。
校验结果可以一键复制吗?
可以。点击「复制报告」按钮即可把带行号、原因、建议的纯文本报告复制到剪贴板,方便贴进代码评审或工单。