在 docker compose yaml 中为 Gitlab CI 混合使用和不使用赋值的 ENV 变量

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

在尝试通过 compose 设置数据库容器时,我遇到了凭据管理问题。我希望能够使用 Gitlab 秘密/变量来设置数据库密码等,并在没有分配的情况下发现了 ENV 变量,即。

gitlab-ci:

MARIADB_ROOT_PASSWORD=$MARIA_ROOT_PASS MARIADB_USER='root' docker compose up --build

使用这样的撰写文件:

environment:
      MARIADB_ROOT_PASSWORD
      MARIADB_USER
      ...

如果唯一的 ENV 变量是那些没有赋值的变量,则此方法有效,但一旦将其与类似的东西结合起来,它显然就会中断

MARIADB_ROOT_PASSWORD
MARIADB_USER
CUDA_DEVICE_ORDER: "PCI_BUS_ID"
CUDA_VISIBLE_DEVICES: ${CUDA_DEVICES:-'0, 1, 2, 3'}

有没有办法在同一个撰写文件中包含两种类型的 ENV,或者您是否推荐另一种将 CI 变量合并到构建管道中的方法?请注意,我想避免在主机服务器上使用 .env 文件。

docker docker-compose mariadb environment-variables gitlab-ci
1个回答
0
投票

environment:
有两种语法,都支持混合 YAML 文件中定义的值和从主机传递的值。

environment:
可以是一个YAML映射,带有一系列
KEY: value
。 如果省略一半,那么 Compose 将传递来自主机的值。
value

您还可以将 
environment: MARIADB_ROOT_PASSWORD: # <-- note colon at the end, no value MARIADB_USER: CUDA_DEVICE_ORDER: "PCI_BUS_ID" CUDA_VISIBLE_DEVICES: ${CUDA_DEVICES:-0, 1, 2, 3}

设置为

environment:
字符串的 YAML 列表(通常是行首带有
-
的行的一个值)。 在此语法中,仅设置
KEY=value
而不使用
KEY
一半会传递该值。
=value

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