dockerfile 中设定LABEL build date, 自动生成当前日期, 不传参
时间: 2023-09-23 18:13:12 浏览: 223
如果不想手动传递构建日期的参数,可以使用 `ARG` 指令结合 `SHELL` 指令来自动生成当前日期,并将其设置为 `LABEL build_date` 的值。具体实现方式如下:
```
SHELL ["bash", "-c"]
ARG BUILD_DATE
LABEL build_date=$BUILD_DATE
# 如果没有传入构建日期参数,则自动生成当前日期
ARG BUILD_DATE=
RUN if [ -z "$BUILD_DATE" ]; then \
BUILD_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ"); \
fi && \
echo "Build date: $BUILD_DATE"
```
在上述代码中,我们使用 `ARG` 指令定义了一个名为 `BUILD_DATE` 的变量,并将其设置为默认值为空字符串。然后,我们使用 `SHELL` 指令来指定使用 bash shell 执行后续的 `RUN` 指令。
接着,我们使用一个 `RUN` 指令来判断是否传入了构建日期参数。如果没有传入,则使用 `date` 命令来获取当前的 UTC 时间,并将其格式化为 ISO 8601 格式的字符串。最后,我们使用 `echo` 命令来输出构建日期的信息。
最终,Docker 会将自动生成的构建日期设置为 `LABEL build_date` 的值,并将其添加到镜像的元数据中。如果用户手动传递了构建日期的参数,则会使用用户传递的值来设置 `LABEL build_date` 的值。
相关问题
dockerfile 中设定LABEL build date, 自动生成当前日期, 不传参, 简洁
可以使用 `ARG` 指令和 Shell 脚本来简洁地实现自动生成当前日期并将其设置为 `LABEL build_date` 的值的效果,示例如下:
```
ARG BUILD_DATE
LABEL build_date=${BUILD_DATE:-$(date -u +"%Y-%m-%dT%H:%M:%SZ")}
```
在上述代码中,我们使用 `ARG` 指令定义了一个名为 `BUILD_DATE` 的变量,并将其作为 `LABEL build_date` 的值。在设置 `LABEL build_date` 的值时,我们使用了 Shell 脚本 `${BUILD_DATE:-$(date -u +"%Y-%m-%dT%H:%M:%SZ")}`,它会先尝试使用 `BUILD_DATE` 变量的值,如果该变量没有被定义,则使用 `date` 命令来获取当前的 UTC 时间,并将其格式化为 ISO 8601 格式的字符串。这样,如果用户没有手动传递构建日期的参数,Docker 就会自动生成当前日期并将其设置为 `LABEL build_date` 的值。
此外,由于 Shell 脚本中使用了 `${BUILD_DATE:-...}` 的形式,它还允许用户手动传递构建日期参数来覆盖默认值。例如,如果用户希望将构建日期设置为 `2022-01-01T00:00:00Z`,可以使用以下命令来构建镜像:
```
docker build --build-arg BUILD_DATE=2022-01-01T00:00:00Z -t myimage .
```
这样,Docker 就会使用用户传递的构建日期来设置 `LABEL build_date` 的值。
dockerfile 中设定LABEL build date, 自动生成当前日期
可以使用 Dockerfile 中的变量来自动生成当前日期,然后将其设置为 `LABEL build_date` 的值。具体实现方式如下:
```
ARG BUILD_DATE
LABEL build_date=$BUILD_DATE
```
在上述代码中,我们定义了一个名为 `BUILD_DATE` 的变量,并将其作为参数传递给 Docker 构建命令。在命令行中运行构建命令时,可以使用 `--build-arg` 参数来设置该变量的值,例如:
```
docker build --build-arg BUILD_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ") -t myimage .
```
在上述示例中,我们使用 `$(date -u +"%Y-%m-%dT%H:%M:%SZ")` 命令来获取当前的 UTC 时间,并将其格式化为 ISO 8601 格式的字符串。然后,我们通过 `--build-arg` 参数将该字符串作为 `BUILD_DATE` 变量的值传递给 Docker 构建命令。最终,Docker 会将该值设置为 `LABEL build_date` 的值,并将其添加到镜像的元数据中。
阅读全文