sto*_*orm 9 command-line container docker
实际上,我不确定这是否可以完成,但我知道总有一个 hack ,所以我对你们专家对此的看法充满热情。
我想在构建我的 docker 镜像时传递一个包作为参数,以便我可以使用相同的 dockerfile 部署不同的应用程序版本。
这是我想要实现的示例:
在构建图像时将包作为参数传递的能力(我知道语法是错误的,这只是一个示例)
docker build -t myapp/myapp:v1 . package_myapp_v1.tar
Run Code Online (Sandbox Code Playgroud)
然后使用ADD
in 将Dockerfile
其提取到容器中。
ADD passed_package ./
Run Code Online (Sandbox Code Playgroud)
因此,如果我想为我的应用程序的 v2 构建一个映像,我只需在docker build
命令中指定新包,而无需更改Dockerfile
.
任何人都知道让它工作的技巧是什么?
谢谢 :)
sto*_*orm 11
在阅读docker's doc两分钟后,我设法解决了这个问题。
ARG 指令定义了一个变量,用户可以在构建时使用 --build-arg = 标志使用 docker build 命令将其传递给构建器。如果用户指定了未在 Dockerfile 中定义的构建参数,则构建会输出错误。
所以我用它来建立我的形象
docker build -t myapp/v1 --build-arg package=package_myapp_v1.tar.gz .
Run Code Online (Sandbox Code Playgroud)
然后获取包里面的Dockerfile
使用ARG
说明:
ARG package
ADD $package ./
Run Code Online (Sandbox Code Playgroud)
$package
变量的内容package_myapp_v1.tar.gz
是通过标签传递的package
。