如何优化使用HEREDOC的Docker RUN指令的构建输出可读性?
解决Docker HEREDOC格式RUN指令日志标识问题
不用新增额外的RUN指令,有两个简洁的方法可以让构建日志清晰区分不同的HEREDOC格式RUN指令:
方法一:自定义HEREDOC分隔符(推荐)
HEREDOC的分隔符可以自定义为有业务含义的字符串,Docker构建日志会直接显示这个分隔符,一眼就能识别这条RUN的作用,而且完全不影响脚本执行。
示例Dockerfile:
FROM <some-image> # 安装系统依赖 RUN <<`INSTALL_SYSTEM_DEPS` set -e apt-get update && apt-get install -y curl git # 其他相关命令 INSTALL_SYSTEM_DEPS # 构建应用代码 RUN <<`BUILD_APP_CODE` set -e cd /app npm install && npm run build BUILD_APP_CODE
对应的构建输出会变成:
=> [2/3] RUN <<
INSTALL_SYSTEM_DEPS
=> [3/3] RUN <<BUILD_APP_CODE
方法二:在RUN指令后添加注释
如果不想修改分隔符,也可以直接在HEREDOC起始标记后加注释,Docker日志会显示这个注释内容:
示例Dockerfile:
FROM <some-image> RUN <<` # 安装系统依赖` set -e # 命令内容 `
对应的构建输出会显示:
=> [2/2] RUN <<
# 安装系统依赖
这两种方法都不会新增无用的RUN指令,也完全保留HEREDOC的多命令编写格式,没有额外的镜像层开销。
内容的提问来源于stack exchange,提问作者Josh M.
相关产品推荐
相关产品推荐

