【问题标题】:print ARG value in docker build在 docker build 中打印 ARG 值
【发布时间】:2020-09-26 18:21:33
【问题描述】:

有没有办法打印通过--build-arg 标志传递给docker build 命令的ARGs 值?

仅使用 RUN echo $ARG_NAME 是不够的,因为我希望将其打印在不允许的 FROM 部分之前。

关键是立即查看这些值,以便我可以快速停止构建,防止下载错误的基础映像。

已经搜索过 docker docs 和 google。也许这里有人可以提供一些启示。

【问题讨论】:

    标签: docker docker-build


    【解决方案1】:

    您可以使用多阶段构建,其中第一阶段仅用于诊断,否则会被完全忽略。

    FROM busybox
    ARG ARG_NAME
    RUN echo $ARG_NAME
    
    FROM python:3.8
    ARG ARG_NAME
    ...
    CMD ["my_app"]
    

    请注意,Docker 层缓存可能会导致 RUN 步骤被完全跳过,因此即使这也不是 100% 可靠。

    【讨论】:

    • 好主意!使用标志docker build --no-cache . 可以解决跳过问题
    【解决方案2】:

    这是不可能的

    Dockerfile 必须以 FROM 指令开头

    https://docs.docker.com/engine/reference/builder/

    RUN 命令的执行将在一个必须由图像创建的中间容器中执行。

    【讨论】:

    • 感谢您的回答:)。我对此很清楚。这就是为什么我提到我不能使用RUN echo....。我想知道是否有其他方法/解决方法,也许是一些冗长的级别......
    • 抱歉,Dockerfile 可能不以 FROM 指令开头,因为可以将基础镜像作为构建变量传递。在这种情况下,Dockerfile 将以 ARG VARNAME 开头,然后是 FROM VARNAME。 docs.docker.com/engine/reference/builder/…
    猜你喜欢
    • 2021-03-06
    • 2019-12-30
    • 2017-07-06
    • 2018-06-27
    • 2020-04-19
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 2020-11-17
    相关资源
    最近更新 更多