如何定义环境值witih:在docker compose中的名称?

时间:2018-10-20 08:25:58

标签: docker docker-compose

我想将名为ABC:DEF的环境变量传递给docker-compose.yml中定义的容器。

如何做到?

如果我写服务定义

environment:
    ABC:DEF: ${ABC:DEF}

我知道了

ERROR: Invalid interpolation format for "environment" option in service: "${ABC:DEF}"

编辑:该问题的目的是了解是否可以使用包含:冒号的环境变量名称,以及如何在docker-compose.yml中正确定义它。从受影响的容器内部运行的“事物”的角度出发,讨论使用:冒号的替代方法不是问题。

2 个答案:

答案 0 :(得分:1)

使用以下行代替ABC:DEF: ${ABC:DEF}

environment:
  POSTGRES_PASSWORD: any-password 

[更新]:

  

如果无法在系统的环境变量中使用:,则将{替换为__(双下划线)。

Configuration_in _ASP.NET _Core_Reference

所以我认为应该是这样的:

ABC__DEF: <asp-environment>    

答案 1 :(得分:-1)

有多种方法可以在docker compose中定义环境变量,如下所示:

  1. 在撰写文件中定义它,并通过shell传递值

enter image description here

    $ export TAG=v1.0

    $ docker-compose up -d
  1. 您可以在运行docker-compose时设置环境变量

    docker-compose run -e TAG = v2.0

  2. 您可以在撰写文件中传递外部变量文件

enter image description here

  1. 您可以在.env文件中定义默认值

enter image description here

在多个文件中设置相同的环境变量时,以下是Compose用于选择要使用的值的优先级:

  1. 撰写文件
  2. Shell环境变量
  3. 环境文件
  4. Dockerfile
  5. 未定义变量