docker FROM中可以使用一个variables吗?

我想知道如果一个envvariables可以在docker使用? 原因是要控制标记。 例如,说我在我的Dockerfile中有这条线:

From myApp 

我想要的是这样的:

 From myApp:${VERSION} 

这样我可以说docker build . myApp --build-arg VERSION=9 docker build . myApp --build-arg VERSION=9

为这个应用程序构build泊坞窗图像的过程是相同的。 我不希望有Dockerfiles几乎相同,只是使用不同的基础镜像。如果我想构build版本9,它应该使用版本9的基础镜像。

你可以简单地从一个模板生成你的Dockerfile。 把这样的东西放在一个Makefile中:

 MYTAG=latest .PHONY: Dockerfile Dockerfile: Dockerfile.in sed 's/MYTAG/$(MYTAG)/' $< > $@ || rm -f $@ 

然后你可以运行:

 make MYTAG=8; docker build -t my-app-8 . 

如果您经常在FROM行中构build需要不同标签的图片,这样做才有意义。

这不可能。

虽然,您可以使用from myApp:latest的variables标签from myApp:latest并在创build新版本时覆盖latest标签。

不幸的是,这是不可能的。 你的Dockerfile的第一行必须是一个FROM指令,所以不能使用ARG指令。 关于生成Dockerfile有一个很好的答案,但我也想build议仅仅创build不同的Docker文件,然后在你的docker docker build命令中使用-f开关指定一个特定的文件:

 docker build -t codemiester/app:latest -f ./Dockerfile.apache2.ubuntu