【问题标题】:Hide docker driver parameters隐藏 docker 驱动参数
【发布时间】:2021-07-08 16:15:12
【问题描述】:

是否可以隐藏 docker 日志记录驱动程序选项或至少从文件中加载它们?

我想将 docker-compose.yml 提交到 VCS,但要在运行时挂载 LOKI_USER_IDLOKI_API_KEY

docker-compose.yml:

version: '3'

x-logging: &logging
  logging:
    driver: loki
    options:
      # \/\/\/
      loki-url: "https://${LOKI_USER_ID}:${LOKI_API_KEY}@logs-prod-us-central.grafana.net/loki/api/v1/push"
      # /\/\/\

services:

  service1:
    image: image1
    restart: always
    <<: *logging

  service2:
    image: image2
    restart: always
    depends_on:
      - service1
    <<: *logging

我试过像这样拆分它们:

logging.yml:

version: '3'

x-logging: &logging
  logging:
    driver: loki
    options:
      loki-url: "https://${LOKI_USER_ID}:${LOKI_API_KEY}@logs-prod-us-central.grafana.net/loki/api/v1/push"

docker-compose.yml:

version: '3'

services:

  service1:
    image: image1
    restart: always
    <<: *logging

  service2:
    image: image2
    restart: always
    depends_on:
      - service1
    <<: *logging

然后运行

docker-compose -f logging.yml -f docker-compose.yml config

但无法解析*logging别名:

ERROR: yaml.composer.ComposerError: found undefined alias 'logging'
  in "./docker-compose.yml", line 12, column 9

这是意料之中的事。


实现此目的的另一种方法是使用envsubst 并处理docker-compose.yml 文件:

loki.env.sh:

export LOKI_USER_ID="XXX"
export LOKI_API_KEY="YYY"

docker-compose.yml:

version: '3'

x-logging: &logging
  logging:
    driver: loki
    options:
      loki-url: "https://${LOKI_USER_ID}:${LOKI_API_KEY}@logs-prod-us-central.grafana.net/loki/api/v1/push"

# ...

并使用以下命令启动它:

source loki.env.sh
envsubst < docker-compose.yml | docker-compose up -d

【问题讨论】:

    标签: docker docker-compose grafana secret-key grafana-loki


    【解决方案1】:

    好的,所以解决方案更简单。

    根据documentation docker-compose 将利用与docker-compose.yml 位于同一目录中的.env 文件中的属性。

    .env:

    LOKI_USER_ID=XXX
    LOKI_API_KEY=YYY
    

    docker-compose.yml:

    version: '3'
    
    x-logging: &logging
      logging:
        driver: loki
        options:
          loki-url: "https://${LOKI_USER_ID}:${LOKI_API_KEY}@logs-prod-us-central.grafana.net/loki/api/v1/push"
    
    # ...
    

    然后简单地启动

    docker-compose up
    

    【讨论】:

      猜你喜欢
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多