可以在docker FROM中使用变量吗?

Cod*_*dyK 19 docker

我想知道是否可以在docker中使用env变量?原因是控制标记.例如,假设我在Dockerfile中有这一行:

From myApp
Run Code Online (Sandbox Code Playgroud)

我想要的是这个:

From myApp:${VERSION}
Run Code Online (Sandbox Code Playgroud)

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

为此应用程序构建docker镜像的过程是相同的.我不想让几乎相同的Dockerfiles使用不同的基本图像.如果我想构建版本9,它应该使用基本图像的版本9.

Had*_*OMA 18

引用此链接 :

如果有人来这里寻找答案,现在可以做到这一点:https://docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-interact


Man*_*gor 16

至少对于这个 docker 版本,这是可行的

docker --version
docker version 18.09.8, build bfed4f5
Run Code Online (Sandbox Code Playgroud)

它需要 Dockerfile 中的预设变量,例如

ARG TAG=latest
FROM traefik:${TAG}
Run Code Online (Sandbox Code Playgroud)

然后您可以使用以下内容覆盖此预设

docker build --build-arg "TAG=2.2.8" -t my-app:$TAG
Run Code Online (Sandbox Code Playgroud)

在构建期间不会显示版本号。如果你想测试它是否有效,请参考一个不存在的版本 - 它会失败:manifest my-app:version not found。