使用Dockerfile参数为镜像打标签的优雅方法

40次阅读
没有评论

问题描述

在Dockerfile中使用了一个参数(ARG)来下载特定版本的应用程序。他想要使用该版本号为镜像打标签。他目前的做法是在命令中多次输入参数名,这样做不够优雅,而且可能会因为拼写错误而引入错误。
所以,是否有一种更优雅的方法来为镜像打上Dockerfile参数的值作为标签呢?

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

你可以使用一个Makefile来实现这个目标:
在Makefile中添加以下内容:

PHPBB_VERSION := 3.2.4
build:
    docker build \
        --build-arg PHPBB_VERSION=${PHPBB_VERSION} \
        --tag phpbb:${PHPBB_VERSION} - < Dockerfile

然后,在终端中运行make build命令即可。
Dockerfile内容如下:

FROM php:7.2-cli
ARG PHPBB_VERSION
RUN wget -nv -O- https://github.com/phpbb/phpbb/archive/release-${PHPBB_VERSION}.tar.gz | \
    tar xzf - --strip-components=1

这样,你只需要在Makefile中设置一次PHPBB_VERSION变量,然后运行make build命令即可构建带有相应标签的镜像。

方案2

你可以将这个命令放在一个shell脚本中,这样你就不需要多次输入命令,只需更改$PHPBB_VERSION的值并运行shell脚本即可。

#!/bin/bash
PHPBB_VERSION=3.2.4
docker build \
    --build-arg PHPBB_VERSION=${PHPBB_VERSION} \
    --tag phpbb:${PHPBB_VERSION} - < Dockerfile

在这个示例中,我们将命令放在一个shell脚本中。你只需要更改$PHPBB_VERSION的值,并运行shell脚本即可。
以上是两种优雅的方法来为镜像打上Dockerfile参数的值作为标签。你可以根据自己的需求选择其中一种方法来实现。

正文完