Dockerfile ARG 参数说明和使用案例

5 min read

ARG 是一个 Dockerfile 指令,用于定义一个构建参数。这个参数可以在构建 Docker 镜像的时候被传递,从而在构建过程中被引用。

ARG 的语法如下:

ARG name[=default]

其中,name 是参数名称,default 是参数默认值。如果不指定默认值,那么可以在构建过程中传入该参数进行覆盖。

使用 ARG 的主要目的是增强 Docker 镜像的可配置性。可以根据不同的构建环境,动态地传入不同的构建参数,从而方便地构建出不同的镜像。

下面是一个 ARG 的使用案例:

FROM ubuntu:18.04

ARG HTTP_PROXY
ARG HTTPS_PROXY

ENV http_proxy=$HTTP_PROXY \
    https_proxy=$HTTPS_PROXY

RUN apt-get update && apt-get install -y curl
RUN curl -s http://example.com/ > index.html

CMD ["cat", "index.html"]

这个 Dockerfile 中定义了两个构建参数 HTTP_PROXY 和 HTTPS_PROXY,并在后续的 ENV 指令中将这两个参数赋值给 http_proxy 和 https_proxy 环境变量。

在构建 Docker 镜像的时候,可以通过传入 HTTP_PROXY 和 HTTPS_PROXY 参数来覆盖默认值,例如:

docker build --build-arg HTTP_PROXY=http://proxy.example.com:8080 --build-arg HTTPS_PROXY=https://proxy.example.com:8081 .

这样就可以根据不同的构建环境,动态地传入不同的代理设置,从而方便地构建出不同的镜像。