dockerfile 中设定 LABEL build date, 不准使用手动参数 --build-arg, 也不得涉及echo 修改 /etc/docker-image-info, 不能使用临时文件, 只能使用RUN命令
时间: 2024-03-27 11:35:12 浏览: 26
可以使用 `RUN` 命令结合 shell 子进程的方式来实现,将当前时间作为构建日期标签。
下面是一个可能的解决方案:
```Dockerfile
FROM some-image
# 设置构建日期标签
RUN BUILD_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ") \
&& LABEL "build-date"="$BUILD_DATE"
```
这个 Dockerfile 中使用 `RUN` 命令来执行一个 shell 子进程,将当前时间格式化为 ISO 8601 格式,并设置为 `BUILD_DATE` 环境变量。然后使用 `LABEL` 命令将 `BUILD_DATE` 环境变量的值设置为构建日期标签。
这样就可以在构建镜像时自动生成构建日期标签,而不需要手动指定参数或修改任何文件。
相关问题
dockerfile 中设定 LABEL build date, 不准使用手动参数 --build-arg, 也不得涉及echo 修改 /etc/docker-image-info, 只能使用RUN命令
可以通过在 Dockerfile 中使用 RUN 命令来实现。下面是一种可能的解决方案:
```Dockerfile
FROM some-image
# 设置构建日期标签
RUN printf "build-date=$(date -u +"%Y-%m-%dT%H:%M:%SZ")\n" >> /image-info
# 设置标签
LABEL build-date=$(cat /image-info | grep build-date | cut -d= -f2)
# 删除临时文件
RUN rm /image-info
```
这个 Dockerfile 中使用了 printf 命令来将当前时间格式化为 ISO 8601 格式,并将其追加到一个临时文件中。然后使用 grep 和 cut 命令来提取出构建日期,并将其设置为标签。最后,使用 RUN 命令删除临时文件。这样就可以在构建镜像时自动生成构建日期标签,而不需要手动指定参数或修改 /etc/docker-image-info 文件。
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` 的值,并将其添加到镜像的元数据中。
阅读全文