docker 为环境变量编写正确的语法

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

我已经看到了在

docker-compose.yml
文件中设置环境变量的两种方法的多个示例

environment:
      EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://eureka-server:9000/eureka

environment:
     - EUREKA_CLIENT_SERVICEURL_DEFAULTZONE=http://eureka-server:9000/eureka

有正确或错误的方法吗? 应该优先选择哪一个?

docker docker-compose
1个回答
0
投票

有正确还是错误的方法吗?

不,这两种语法都得到完全支持并广泛使用。差异主要在于语法的极端情况。

我建议只选择一个并在单个文件中一致使用它。


地图形式在空白方面更加灵活。我偶尔会在列表语法中看到拼写错误,例如

environment:
  - VARIABLE = value

它将名为

VARIABLE 
(以空格结尾)的变量设置为
 value
(以空格开头)。但是

environment:
  LONG_VARIABLE: value
  VARIABLE:      value

将两者设置为

value
,且没有前导空格。

如果您使用语法从主机或

.env
文件传递变量,并且您使用具有外部提供值的变量,则 YAML 内联序列语法可以更加紧凑。

environment: [PGUSER, PGHOST, PGPASSWORD, SECRET]

相反,如果您使用 YAML 锚点来尝试共享值,则需要映射语法。锚点可以应用于映射条目的一半值,但不能应用于单个标量节点值的一半。

services:
  database:
    environment:
      POSTGRES_PASSWORD: passw0rd &pgpasswd
  app:
    environment:
      PGPASSWORD: *pgpasswd

如果您没有犯第一个错误,并且没有使用后两种样式中的任何一种,那么实际上没有任何区别。

© www.soinside.com 2019 - 2024. All rights reserved.