Docker变量范围

问题描述 投票:-1回答:1

我想知道在哪里可以看到我定义的变量。例如,我有三个文件:

.env 
BLA=1

docker-compose.xml
IS_ONE=${BLA}

Dockerfile
RUN echo "$BLA" >> file.txt

我想知道这种关系,例如:

我是否需要在所有文件中定义的变量?还是有像这样的关系

  • docker-compose.xml只能看到.env变量?
  • Dockerfile只能看到docker-compose.xml变量吗?

而且,我需要在哪里声明一个变量以在Dockerfile中自动触发的bash脚本中使用(如果可能的话),或者稍后在容器的控制台中使用。

docker
1个回答
1
投票

这里有很多例子:https://docs.docker.com/compose/environment-variables/

如果您需要自定义docker-compose本身,则使用.env文件。例如,我想在我的容器名称中包含构建ID,我的.env文件会有

BUILD_ID=20

和docker-compose.yml会有

containername: "foo-${BUILD_ID}"

如果我想在运行时将环境变量传递给容器,我会使用

environment: - FOO_VAR=bar

如果我想将多个环境变量传递到容器中,docker-compose.yml会有

env_file: my_container_env

如果要动态生成FOO_VAR的值,这是一种简单的方法。

是否直接在docker-compose中使用set env值或使用文件取决于:

  1. 价值观是动态的吗?如果是,请使用文件并使用某些脚本在文件中填充正确的值(例如jenkins可以在我的.env文件中设置我的BUILD_ID)
  2. 他们'秘密'吗?如果是,请使用文件,不要将.env或my_container_env文件签入到仓库中 - 您必须单独管理这些文件
© www.soinside.com 2019 - 2024. All rights reserved.