Docker / 容器

Dockerfile 格式化

沿诊断行号定位问题,查看 FROM 阶段,并在应用前审阅格式化结果。

Dockerfile 格式化

Dockerfile 源码

结果

在当前浏览器内处理,内容仅存于内存;不发起构建或镜像仓库请求。

格式选项

结果已过期,请重新检查再导出。

长文件中,构建阶段与运行阶段的边界容易被连续的命令淹没。Dockerfile 格式化配合阶段导航,让你保留原文的同时检查每一段指令属于哪里。

这里将 Dockerfile 在线检查、Dockerfile 语法检查与多阶段构建结构放在同一个 Dockerfile 编辑器里。检查负责提示已知问题,格式化负责调整空白,两者都不会执行容器命令。

为什么使用 Dockerfile 格式化

从阶段找到原始指令

Dockerfile 格式化页面按 FROM 的出现顺序列出基础镜像、可选名称及指令数量。点击阶段就能回到声明处,核对 COPY --from 的用途,无需在长文件中反复搜索。

源码中的高亮行与三个阶段卡片中的一个对应。

先看到变化,再决定应用

结果区保留独立的格式化预览。修改续行缩进后,先看变化行数和完整文本,再应用到输入;一次撤销会同时恢复之前的输入、输出和诊断。

原始续行缩进与整理后的文本并列,旁边有应用和返回箭头。

让检查跟上你的编辑节奏

01

先展开阶段视图

示例含构建和运行两个阶段,序号从零开始。阶段卡片能定位到 FROM,指令条目还能展开原文和用途说明;未命名阶段也会保留。

02

需要时改为手动

默认在停止输入 350 毫秒后检查。关闭自动检查会取消排队任务,并显示检查按钮;Ctrl/Cmd + Enter 可手动执行。任何输入变化都会先禁用旧结果导出。

03

用预览确认改动

续行可选两个空格、四个空格或制表符,默认四个空格。预览显示实际变化行数;修改输入会使预览失效。示例替换和清空也需要确认,之后可撤销。

从问题位置读懂文件结构

带行列的诊断

错误与警告分开计数,点击位置可将编辑器移到对应行列并高亮错误行。分类说明已本地化,折叠详情保留引擎英文原文和代码,便于复核具体参数。

说明当前文件里的指令

展开 ARG、ENV、EXPOSE 等指令可查看用途。构建变量不等于运行时环境变量,声明端口也不等于发布端口;说明用于理解语义,不会替你修改配置。

保留注释与正文

解析器识别续行和 heredoc,缺失结束标记会报错。疑似 JSON 但不是字符串数组的参数只提示核对 shell 回退意图,不武断判定构建必然失败。

哪些结论需要真实构建来验证

不执行构建或安全扫描
不会运行 RUN、读取构建上下文或拉取镜像,因此无法确认文件是否存在、镜像是否可用、构建能否完成,也无法判断漏洞与安全合规。
规则集有明确范围
引擎检查不等于 Hadolint、ShellCheck 或完整 BuildKit 检查。自定义前端扩展可能超出解析器支持范围;引擎忽略注释仍会生效,同时显示警告提醒。
不改写命令语义
只整理指令前空白、纯空白行和续行缩进。不改大小写、不合并 RUN、不排序软件包、不重写 shell 内容。COPY --from 可引用外部镜像,不会因阶段列表里没有它就判错。
单文件与明确上限
仅接受粘贴或编辑文本,最多 131072 个 UTF-16 代码单元、2000 个物理行。超限停止处理,不截断。列表每次显示 50 项;导出包含当前完整格式化文本,换行统一为 LF。

Dockerfile 格式化常见问题

格式化会影响镜像构建的行为吗?

目标是调整空白排版,不重写命令。尤其有复杂续行时,应先比较结果区的完整文本和变化行数,再点击应用;发现不合意可以撤销,恢复应用前的输入和结果。

格式化和 hadolint 检查有什么区别?

格式化处理空白,Hadolint 则有自己的 Dockerfile 与 shell 检查规则。本页的 JavaScript 引擎只覆盖已支持的静态诊断,不能用这里的通过状态替代 CI 中的 lint 结果。

可以在 CI 中统一格式吗?

可以在项目的 CI 中配置固定版本的格式化器或检查器,但本页不会替你执行流水线,也不生成 CI 配置。应单独核对所用工具的规则与参数。

多阶段 Dockerfile 可以格式化吗?

可以。每条 FROM 都会生成阶段入口,保留阶段名、基础镜像和原始顺序。格式化不会合并阶段,也不会更改 COPY --from 所指向的来源。

Dockerfile 内容会传到服务器吗?

工具在浏览器中解析粘贴内容,不将其发送给格式化服务或镜像仓库。刷新页面后不会保留输入;需要长期保存时请下载并自行管理文件。

还有其他问题?

回到当前文件

继续使用 Dockerfile 格式化,先定位一个问题或阶段边界,确认预览符合预期后再导出。

静态诊断用于审阅;实际构建仍需单独验证。