【发布时间】:2019-03-25 17:21:23
【问题描述】:
我正在构建一个 Dockerfile,我想在构建它时显示一些帮助消息。
我也尝试了RUN echo "installing this",但正如预期的那样,它不起作用。
那么,如何在安静模式下运行docker build 命令时显示帮助消息以及如果可能。
【问题讨论】:
标签: docker docker-build
我正在构建一个 Dockerfile,我想在构建它时显示一些帮助消息。
我也尝试了RUN echo "installing this",但正如预期的那样,它不起作用。
那么,如何在安静模式下运行docker build 命令时显示帮助消息以及如果可能。
【问题讨论】:
标签: docker docker-build
在显示RUN echo 命令的情况下,我遇到了与 docker build 类似的问题。我能够通过将构建命令修改为来修复它
docker build -t hello-world ./ --progress=plain --no-cache
这里重要的是 --progress=plain 选项,因为 docker 默认为 auto 并隐藏了太多输出。 --no-cache 选项是重建容器以显示所有输出所必需的。
【讨论】:
先验RUN echo "installing this" 应该可以工作并显示一些东西。但是,只有一个 echo 命令的 RUN 层会有点不好。
确实如页面dev-best-practices中所述:
如果您需要使用不包含 多阶段构建,尝试通过以下方式减少图像中的层数 尽量减少 Dockerfile 中单独的
RUN命令的数量。你 可以通过将多个命令合并到单个RUN行中来做到这一点 并使用 shell 的机制将它们组合在一起。
有关其他相关建议,还有一个页面dockerfile_best-practices。
对于您在问题中提到的用例,您可以编写
RUN echo "install this" && command that install this...
或者只是
RUN set -x && command that install this...
自动显示在docker build 期间运行的命令。
但如果您使用docker build --quiet 选项,我不确定是否有可能实现您想要的。
因此,如果您真的想在显示特定信息消息时获得一些简洁/安静的构建日志,您可以尝试删除docker build 的--quiet 选项,但将set -x 与command that install this >/dev/null 等重定向结合起来。
【讨论】:
docker build 显示的消息,使用set -x 突出显示我的命令(红色。我不知道它是否适用于所有系统),所以这个解决方案有效!跨度>
set -x,而是docker build 默认打印的标准错误消息。因此,如果你用RUN echo error >&2 编译Dockerfile,你也会得到一些红色的输出。
set -x,每个执行命令的名称前的提示符由特殊变量PS4定义,如果需要可以自定义。
PS4 的信息。学到了新东西!