在尝试通过 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 文件。
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