【问题标题】:Dump docker-compose environment variables into file将 docker-compose 环境变量转储到文件中
【发布时间】:2020-10-13 14:44:44
【问题描述】:

有没有办法将 docker-compose.yml 中的环境变量转储到给定容器上的文件中?

例子:

version: "3"
services:
  api:
    image: registry.gitlab.com/my-api
    environment:
      - TOKEN=123
      - DB_NAME=db

我想在docker-compose run -d 命令之后在api 容器内自动创建一个.env 文件。

【问题讨论】:

  • 您是希望获得流程开始时的完整环境,还是只是 Compose 级别的覆盖?是否需要考虑env_file: 等来源和来自宿主环境的传递?
  • @DavidMaze 我只需要 Compose 级别的覆盖,就像示例中的 2 个变量一样。我不需要考虑env_file 选项,只需要考虑docker-compose.yml 文件中的环境变量
  • 我可能会尝试使用像 yq 这样的工具从 YAML 中提取它(虽然我手头没有食谱),或者使用你喜欢的语言的 YAML 解析库。跨度>
  • @DavidMaze 以及如何将提取的内容写入容器中的文件?
  • 你的实际目标是什么?这些值将在过程环境中;为什么你需要它们在一个文件中?您可以绑定安装配置文件而不是(或除了)设置环境变量吗? (我错过了“在容器中”的细节。)

标签: docker docker-compose environment-variables


【解决方案1】:

这样的?

version: "3"

services:
  test:
    image: alpine
    environment:
      API_URL: "test"
      TEST: "test"
    volumes:
      - envstorage:/env
    command: "cat /env/storeme"
    depends_on:
      - variable-storer
  variable-storer:
    image: alpine
    environment:
      TEST_1: "test"
      TEST_2: "test"
      TEST_3: "test"
      TEST_4: "test"
      TEST_5: "test"
      TEST_6: "test"
    volumes:
      - envstorage:/env
    command: "sh -c 'env > /env/storeme'"

volumes:
  envstorage:
    name: 'env-test'

注意:这是尽可能的 hacky。

【讨论】:

    猜你喜欢
    • 2015-06-17
    • 2020-11-14
    • 2017-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 2018-02-11
    相关资源
    最近更新 更多