gpt4 book ai didi

docker - 从子 dockerfile 中的基本 DockerFile 引用变量?

转载 作者:行者123 更新时间:2023-12-02 19:07:17 32 4
gpt4 key购买 nike

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

我想避免必须跨多个 dockerfile 维护重复的变量。

举个例子:

ARG basic_user="user"
USER ${basic_user}

最佳答案

我相信您正在寻找的是 建立 命令。 Docker ONBUILD command .此命令将允许子容器继承在父 Dockerfile 中声明的命令,并由使用父 Dockerfile 作为基础镜像的任何子 Dockerfile 使用。

这是一个例子:

父 Dockerfile

FROM ubuntu:latest
ONBUILD ARG ARG_1=arg1
ONBUILD ENV CHILD_VAR=${ARG_1}
ONBUILD ENTRYPOINT ["printenv"]

为了这个示例,我将此 Dockerfile 构建为 docker build -t parent .
子 Dockerfile
FROM parent:latest

将此 Dockerfile 构建为 docker build -t child .这个子容器现在将有一个环境变量,其值由父容器的 ARG_1 指定。用下面的方法测试一下,你会得到结果 arg1 :
docker run --name=child child CHILD_VAR

需要注意的是,在此示例中,通过使用 ONBUILD,父级不会有一个名为 CHILD_VAR 的环境变量,也不会有指定的入口点。只有使用父镜像作为基础镜像的 Dockerfiles 才会这样做。

关于docker - 从子 dockerfile 中的基本 DockerFile 引用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48410509/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com