SuperAPI AI 工具集

docker-syntax-dockerfile

部署与运维

查看项目

更新于 10-15 22:17

技能介绍

用途:在编写或审查 Dockerfile、选择 CMD 与 ENTRYPOINT、判断 COPY 与 ADD 时提供语法参考,避免使用会阻塞信号处理的 shell 形式 CMD。

主要能力:整理解析器指令(如 # syntax=docker/dockerfile:1、# escape、# check=error=true),说明 17 条指令的用途及是否创建层;对比 shell 形式与 exec 形式在变量展开和信号处理上的差异;给出 CMD 与 ENTRYPOINT 交互矩阵;提供 COPY 与 ADD 决策指南、ENV 与 ARG 属性对比、HEALTHCHECK 语法与选项、ONBUILD 触发规则,以及 BuildKit 的 cache、bind、secret、ssh、tmpfs 挂载类型。

必要用法与要点:解析器指令必须位于文件最顶部;建议始终以 # syntax=docker/dockerfile:1 开头以启用 BuildKit 扩展;生产镜像的 CMD 与 ENTRYPOINT 应使用 exec 形式;ENTRYPOINT 用 exec 形式固定可执行文件,CMD 用 exec 形式提供可被 docker run 覆盖的默认参数;shell 形式的 ENTRYPOINT 会忽略 CMD;默认优先使用 COPY,仅在需要 URL 下载、校验和或 tar 自动解压时使用 ADD;构建期专用值用 ARG,运行期需要的值用 ENV;HEALTHCHECK 退出码 0 为健康、1 为不健康、2 保留不可用。

限制与警告:不要在 FROM 中使用 latest 标签,应固定版本或摘要;不要将密钥放入 ENV 或 ARG,应使用 RUN --mount=type=secret;不要拆分 apt-get update 与 apt-get install;相关 RUN 命令用 && 合并并在同一层清理缓存;ONBUILD 不允许链式 ONBUILD,也不允许 ONBUILD FROM 与 ONBUILD MAINTAINER。变量替换在 RUN、CMD、ENTRYPOINT 的 exec 形式中不支持。

适用场景:Dockerfile 编写、代码审查、多阶段构建与镜像优化。具体示例与完整参数见其 references 目录及 Docker 官方文档。