不能让泊坞窗扩大ARG定义在文件头(Can't get Docker to expand A

2019-10-28 16:12发布

我有一个基于Windows 10,我想与柯南使用Dockerfile。 我的问题是,我不能让泊坞窗,扩大我在文件的头部定义的ARG。 在此示例:

ARG conan_repository=https://feeds.genetec.com/artifactory/api/conan/conan
ARG conan_remote=genetec

FROM mcr.microsoft.com/windows:1903

RUN conan remote add ${conan_remote ${conan_repository}

要么

RUN conan remote add $conan_remote $conan_repository

最终总是为

C:\>conan remote list
conan-center: https://conan.bintray.com [Verify SSL: True]
$conan_remote: $conan_repository [Verify SSL: True]

远程手动后,我连接到图像添加柯南效果很好。

我不能看到找到关于这个的文档什么?

Answer 1:

移动ARG线后FROM线。

在Dockerfile参考,请参阅了解如何ARG和FROM互动 。 尤其是:

一个ARG宣布前的FROM是一个构建阶段之外,因此它不能在任何指令后使用FROM

您可以使用ARG来控制你从开始将图像(如采摘基本图像的特定标记),在这种情况下ARG必须是第一位的。 否则,你需要把ARGFROM ,如果同样的ARG是在多级Dockerfile的多个部分使用,你需要重复它的每一个阶段。



Answer 2:

如果您想使用全局的args值作为默认,那么你应该申报他们在每个阶段是没有价值的,因此会选择从全局的args的值,如果重写它将使用覆盖值,如果没有,那么它会使用默认值。

让我们看看这个演示Dockerfile

ARG version_default=v1

FROM alpine:latest as base1
ARG version_default
ENV version=$version_default
RUN echo ${version} # value v1 with default value as environment variable.
RUN echo ${version_default}# value v1 as args

为了让您的Dockerfile工作,你需要类似的东西

ARG conan_repository=https://feeds.genetec.com/artifactory/api/conan/conan
ARG conan_remote=genetec

FROM mcr.microsoft.com/windows:1903
ARG conan_repository
ARG conan_remote
ENV conan_remote=$conan_remote
ENV ARG conan_repository=$ARG conan_repository
RUN conan remote add ${conan_remote ${conan_repository}

记住参数数量只适用于建造时间,其中ENV可在容器的运行时间。

或者用多段,你可以尝试从基本影像延伸。



Answer 3:

所以,我得到了我的答案从泊坞窗论坛:泊坞窗可用于Windows值作为变量,这样才能访问值,我需要使用Windows变量。



文章来源: Can't get Docker to expand ARG define at head of file