如何在构建 Docker 映像时显示/打印文件

gam*_*r17 3 docker

各位,我正在从 Dockerfile 构建 Docker 映像,我陷入了一个愚蠢的位置,我正在使用 sed 更新 yaml 文件。

RUN sed -i -e "s@\$REPLACEMENT_TAG@$PM_SERVER_DOCKER_TAG@" /qa.yaml
Run Code Online (Sandbox Code Playgroud)

在此步骤之后,我需要在构建 docker 映像时在输出控制台上显示 yaml 文件,但我无法通过 echo 命令显示它。有人可以帮助我正确的语法吗?

Joh*_*ica 14

使用catechoecho将打印文件的名称。cat显示其内容。

RUN cat /qa.yaml
Run Code Online (Sandbox Code Playgroud)

根据评论中的spankmaster79 ,使用BuildKit后端,您还需要--progress=plain输出。因此,由于您应该进行调试,因此您将需要执行类似于以下操作的操作:

docker build --no-cache --progress=plain -t containername .
Run Code Online (Sandbox Code Playgroud)

  • 编辑:因为我们现在使用 buildkit,所以输出也需要添加 --progress=plain (4认同)
  • 这很有效,但在缓存图层时则不起作用。有什么方法可以防止图层缓存,或者即使缓存也可以打印它? (3认同)

Ati*_*har 5

+1 表示“cat”,但是,如果您仍然想使用 echo,则可以使用如下所示

RUN echo "$(<filename)"
Run Code Online (Sandbox Code Playgroud)