ARG
是 Dockerfile 中用于定义构建参数的指令。构建参数是在构建 Docker 镜像时传递给镜像的一些变量,可以在 Dockerfile 中使用。这使得在构建过程中可以根据需要动态地设置一些值,使得镜像可以更加灵活。
以下是 ARG
的基本用法和解释:
ARG <参数名>[=<默认值>]
<参数名>
:构建参数的名称。<默认值>
:可选,如果指定了默认值,那么当构建时没有提供该参数的值时,将会使用默认值。
构建参数可以在 FROM
、RUN
、CMD
、LABEL
、MAINTAINER
、EXPOSE
、ENV
、ADD
和 COPY
等指令中使用。
示例
# 定义一个参数
ARG APP_VERSION=1.0
# 使用参数在 FROM 指令中
FROM ubuntu:${APP_VERSION}
# 使用参数在 RUN 指令中
RUN echo "Building version: ${APP_VERSION}"
# 使用参数在 CMD 指令中
CMD ["./app", "--version", "${APP_VERSION}"]
构建时传递参数
在构建 Docker 镜像时,你可以使用 --build-arg
参数来传递构建参数的值。例如:
docker build --build-arg APP_VERSION=2.0 -t my-app .
这样,构建过程中使用的 APP_VERSION
就会被设置为 2.0。在构建时动态地传递参数,使得可以在构建镜像时进行一些自定义操作,增加了灵活性。
多个参数
可以在一个 Dockerfile 中定义多个构建参数,例如:
ARG APP_VERSION=1.0
ARG BUILD_DATE
FROM ubuntu:${APP_VERSION}
RUN echo "Building date: ${BUILD_DATE}"
在构建时,可以传递多个参数:
docker build --build-arg APP_VERSION=2.0 --build-arg BUILD_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ") -t my-app .
总之,ARG
允许你在构建时通过传递参数的方式定制 Docker 镜像,使得构建过程更加灵活和可定制。