Dockerfile 里怎么写注释?

Dockerfile 用 # 开头写注释,独占一行,不支持行尾注释;指令参数里的 # 不算注释。另可用 parser directive 指定语法版本。本文说明规则与常见坑。

最佳实践
Dockerfile 里怎么写注释?封面

写法:以 # 开头、独占一行,构建时 Docker 完全忽略该行。Dockerfile 不支持行尾注释——指令后面跟 # 会被当成参数的一部分,这是最常见的坑。

正确写法

# 安装运行依赖
RUN apt-get update && apt-get install -y \
    curl \
    ca-certificates

# 应用启动命令
CMD ["python", "app.py"]

注释用途:说明镜像用途、解释某条指令的原因、记录维护者与构建要求。

错误写法(行尾注释)

RUN apt-get install -y curl   # 装 curl

# 装 curl 不会被当注释——它会成为 RUN 命令的一部分传给 shell(这个例子里 shell 恰好把 # 当注释,但 COPY 等指令就会把 # 当文件名处理,直接构建失败)。注释永远独占一行。

续行中的注释

反斜杠续行的指令,注释不能插在续行中间:

# 正确:注释在指令上方
RUN apt-get update \
    && apt-get install -y curl \
    && rm -rf /var/lib/apt/lists/*

特殊的 # 行:parser directive

文件最顶部# 关键字= 形式出现的行是解析指令,不是普通注释:

# syntax=docker/dockerfile:1
# escape=`

syntax 指定 Dockerfile 语法前端版本(用新特性时需要),escape 改转义符(Windows 镜像常用)。它们必须出现在所有注释和指令之前。

常见问题(FAQ)

Q:注释会影响构建缓存吗?
A:不会。注释行被解析器丢弃,不参与缓存键计算,改注释不触发重建。

Q:多行注释有吗?
A:没有。每行都得加 #

Q:.dockerignore 文件里怎么注释?
A:同样用 # 开头独占一行。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台