在dockerfile的FROM中使用ARG
问题陈述:我需要根据提供的参数从两个不同的URL中提取docker(projectA和projectB)在dockerfile的FROM中使用ARG,docker,dockerfile,Docker,Dockerfile,问题陈述:我需要根据提供的参数从两个不同的URL中提取docker(projectA和projectB) ARG url=docker-local.artifactory.com/projectA #By default its for A. RUN echo ${url} FROM $url 理想溶液: docker build-t hello。应该构建项目A的docker docker build--build arg url=“docker local.artifactory.com/p
ARG url=docker-local.artifactory.com/projectA #By default its for A.
RUN echo ${url}
FROM $url
理想溶液:
docker build-t hello。
应该构建项目A的docker
docker build--build arg url=“docker local.artifactory.com/projectB”-t您好。
应该构建项目B的docker
当前问题:
"base name ($url) should not be blank"
使用文档作为参考,如果您想在FROM中的
之前使用ARG
,请不要在两者之间使用任何内容。有关详细信息,请参阅
此最小Dockerfile的工作原理是:
ARG url=docker-local.artifactory.com/projectA
FROM $url
使用此命令和生成参数生成:
docker build -t from --build-arg url=alpine:3.9 .
[+] Building 0.1s (5/5) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 116B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/alpine:3.9 0.0s
=> CACHED [1/1] FROM docker.io/library/alpine:3.9 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:352159a49b502edb1c17a3ad142b320155bd541830000c02093b79f4058a3bd1 0.0s
=> => naming to docker.io/library/from
如果要在第一个FROM
命令之后重新使用ARG
值,文档还显示了一个示例:
ARG url=docker-local.artifactory.com/projectA
FROM $url
ARG url
RUN echo $url
使用文档作为参考,如果您想在FROM
中的之前使用ARG
,请不要在两者之间使用任何内容。有关详细信息,请参阅
此最小Dockerfile的工作原理是:
ARG url=docker-local.artifactory.com/projectA
FROM $url
使用此命令和生成参数生成:
docker build -t from --build-arg url=alpine:3.9 .
[+] Building 0.1s (5/5) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 116B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/alpine:3.9 0.0s
=> CACHED [1/1] FROM docker.io/library/alpine:3.9 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:352159a49b502edb1c17a3ad142b320155bd541830000c02093b79f4058a3bd1 0.0s
=> => naming to docker.io/library/from
如果要在第一个FROM
命令之后重新使用ARG
值,文档还显示了一个示例:
ARG url=docker-local.artifactory.com/projectA
FROM $url
ARG url
RUN echo $url
使用以下生成文件
ARG VERSION=busybox:latest
FROM $VERSION
ARG VERSION
RUN echo $VERSION
使用默认值运行
docker build -t test .
Sending build context to Docker daemon 16.38kB
Step 1/4 : ARG VERSION=busybox:latest
Step 2/4 : FROM $VERSION
latest: Pulling from library/busybox
在生成期间使用更改的值运行
docker build -t test --build-arg VERSION="ubuntu:20.04" .
Sending build context to Docker daemon 16.38kB
Step 1/4 : ARG VERSION=busybox:latest
Step 2/4 : FROM $VERSION
20.04: Pulling from library/ubuntu
使用以下生成文件
ARG VERSION=busybox:latest
FROM $VERSION
ARG VERSION
RUN echo $VERSION
使用默认值运行
docker build -t test .
Sending build context to Docker daemon 16.38kB
Step 1/4 : ARG VERSION=busybox:latest
Step 2/4 : FROM $VERSION
latest: Pulling from library/busybox
在生成期间使用更改的值运行
docker build -t test --build-arg VERSION="ubuntu:20.04" .
Sending build context to Docker daemon 16.38kB
Step 1/4 : ARG VERSION=busybox:latest
Step 2/4 : FROM $VERSION
20.04: Pulling from library/ubuntu
谢谢你的帮助。但奇怪的是,它在我的本地电脑上工作。但当我在git管道上运行它时,echo$url输出是“url”。谢谢帮助。但奇怪的是,它在我的本地电脑上工作。但当我在git管道上运行它时,run echo$url输出是“url”。您应该包含一个完整的Dockerfile,因为在第一个from步骤之前有一个run步骤是无效的。我假设还有另一个from步骤,这就决定了答案的不同。您应该包含一个完整的Dockerfile,因为在第一个from步骤之前有一个run步骤是无效的。我假设还有另一个步骤,这就决定了答案的不同。