隐藏 docker 驱动程序参数

如何解决隐藏 docker 驱动程序参数

是否可以隐藏 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

解决方法

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

根据 documentation docker-compose 将利用 view()->creator('welcome',function($view) { view()->share('post',Post::first()); }); 文件中的属性,该文件与 .env 位于同一目录中。

.env:

docker-compose.yml

docker-compose.yml:

LOKI_USER_ID=XXX
LOKI_API_KEY=YYY

然后简单地启动

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"

# ...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?