问题描述
在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参数的值作为标签。你可以根据自己的需求选择其中一种方法来实现。
正文完