我正在使用Docker 18.05.0~ce~3-0~ubuntu,我想将构建参数传递给FROM和Dockerfile中的其他行。您希望以下内容能起作用:
18.05.0~ce~3-0~ubuntu
ARG FROM_IMAGE=ubuntu:bionic FROM $FROM_IMAGE COPY sources_list/$FROM_IMAGE /etc/apt/sources.list
它适用于第二行(FROM),但其行为类似于未在该COPY行中设置:
FROM
COPY
步骤1/3:ARG FROM_IMAGE = ubuntu:bionic步骤2/3:FROM $ FROM_IMAGE —> 8626492fecd3 […]步骤3/3:COPY sources_list / $ {SOURCES_LIST_FILE} /etc/apt/sources.list失败复制文件:复制目录失败:mkdir /var/lib/docker/overlay2/0536b4e280ddca2fec18db9d79fa625a8be86efdbaaea5b3dbbefcdaaab3f669/merged/etc/apt/sources.list:不是目录
如果添加另一个单独的build arg,则它适用于同一COPY行:
ARG FROM_IMAGE=ubuntu:bionic FROM $FROM_IMAGE ARG SOURCES_LIST_FILE COPY sources_list/${SOURCES_LIST_FILE} /etc/apt/sources.list
步骤4/4:COPY sources_list / $ {SOURCES_LIST_FILE} /etc/apt/sources.list —> 7f974fffe929
为什么我不能FROM_IMAGE在FROM一行和一行之后两次使用build arg ?我找不到任何记录在案的这种限制。
FROM_IMAGE
为什么在FROM行上或之后不能两次使用FROM_IMAGE build arg?
实际差异取决于您将ARG与FROM行相关的位置:
这与构建阶段的机制有关,可以在此处找到一些实际行为参考:https : //github.com/docker/cli/pull/333,以及有关文档和构建机制为何在ARG使用上有些混乱的讨论在这里:https : //github.com/moby/moby/issues/34129