Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在子DockerFile中引用基础DockerFile中的变量?_Docker - Fatal编程技术网

在子DockerFile中引用基础DockerFile中的变量?

在子DockerFile中引用基础DockerFile中的变量?,docker,Docker,我目前正致力于将一个巨大的DockerFile拆分为单独的DockerFile,但是在巨大的DockerFile中定义的一些变量需要在单独的DockerFile中使用。Docker是否有跨一组DockerFile或其他继承机制导入公共变量的概念 我希望避免在多个DockerFile中维护重复的变量 例如: ARG basic_user="user" USER ${basic_user} 我相信您需要的是ONBUILD命令。此命令将允许子容器继承在父Dockerfile中声明的命令,并由将父Do

我目前正致力于将一个巨大的DockerFile拆分为单独的DockerFile,但是在巨大的DockerFile中定义的一些变量需要在单独的DockerFile中使用。Docker是否有跨一组DockerFile或其他继承机制导入公共变量的概念

我希望避免在多个DockerFile中维护重复的变量

例如:

ARG basic_user="user"
USER ${basic_user}

我相信您需要的是ONBUILD命令。此命令将允许子容器继承在父Dockerfile中声明的命令,并由将父Dockerfile用作基础映像的任何子Dockerfile使用

下面是一个例子:

ARG basic_user="user"
USER ${basic_user}
父Dockerfile

在本例中,我将此Dockerfile构建为
docker build-t父文件。

子Dockerfile

将此docker文件生成为
docker Build-t子容器。
此子容器现在将具有一个环境变量,其值由父容器中的ARG_1指定。用以下方法测试,您将得到结果
arg1

docker run --name=child child CHILD_VAR

需要注意的是,在本例中,通过使用ONBUILD,父级将不会有一个名为CHILD_VAR的环境变量,也不会有指定的入口点。只有将父级用作基础映像的DockerFile才会被保存。

DockerFile中的
ENV
值将被持久化,并由子DockerFile继承


另一方面,
ARG
值不会持久化,因此不是固有的后代DockerFile

我们在这里讨论的是什么类型的变量-
ARG
ENV
,shell变量,什么?用简单的例子更新了帖子但是我可以用父dockerfile中的值引用子dockerfile中的父var ARG_1吗?是的,你也可以这样做。在这种情况下,您只需在父级中有
onbuildarg ARG ARG\u 1=arg1
,然后在子级中可以通过扩展引用它-例如
ENV child\u VAR=$ARG\u 1
docker run --name=child child CHILD_VAR