【问题标题】:Setting docker environment variable to existing environment variable with different name将 docker 环境变量设置为具有不同名称的现有环境变量
【发布时间】:2017-02-23 18:00:00
【问题描述】:

我的 docker 容器需要通过环境变量指定数据库参数。在我的情况下,数据库参数作为 json 字符串的环境变量传递到容器(使用 Cloud Foundry)。

我可以使用这个命令提取所需的数据库参数:

${echo $VCAP_SERVICES | jq -r '.dbaas[0].credentials.username'}

但是如何将它们设置为 docker 映像所需的环境变量? Cloud Foundry 传入的环境变量在容器启动之前不可用。

【问题讨论】:

  • 你看过ARG dfirective吗,文档在这里docs.docker.com/engine/reference/builder/#/arg
  • 感谢您的想法。是的,我确实调查过。这似乎会影响在构建时传递的环境变量,所以我认为在这种情况下它没有帮助。
  • 这是你自己搭建的docker容器吗?还是您从 Docker Hub 使用?
  • 它是来自 docker hub 的第 3 方容器。它是元数据库/元数据库。

标签: database docker environment-variables cloud-foundry


【解决方案1】:

您可以在元数据库容器周围创建自己的包装容器,如下所示:

FROM metabase/metabase
ADD run.sh /usr/local/bin/run.sh
RUN chmod +x /usr/local/bin/run.sh
ENTRYPOINT /usr/local/bin/run.sh

并且有一个看起来像这样的 run.sh 脚本:

!#/bin/bash

export DB_USERNAME=$(echo $VCAP_SERVICES | jq -r '.dbaas[0].credentials.username')
# more vars here as needed... 

# Now call the original entrypoint
/app/run_metabase.sh $@

【讨论】:

    【解决方案2】:

    Scott Rankin 的回答是正确的。在看到斯科特的回答之前,我找到了另一个选择。因为我使用的是 Cloud Foundry,所以我可以使用 manifest.yml 文件,如下所示:

    ---
    applications:
    - name: metabase
      command: |
        apk update &&
        apk add ca-certificates &&
        update-ca-certificates &&
        apk add openssl &&
        wget -O /tmp/jq-linux64 https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64 &&
        chmod +x /tmp/jq-linux64 &&
        export MB_DB_HOST=$(echo $VCAP_SERVICES | /tmp/jq-linux64 -r '.dbaas[0].credentials.host') &&
        export MB_DB_PORT=$(echo $VCAP_SERVICES | /tmp/jq-linux64 -r '.dbaas[0].credentials.port') &&
        export MB_DB_DBNAME=$(echo $VCAP_SERVICES | /tmp/jq-linux64 -r '.dbaas[0].credentials.database') &&
        export MB_DB_USER=$(echo $VCAP_SERVICES | /tmp/jq-linux64 -r '.dbaas[0].credentials.username') &&
        export MB_DB_PASS=$(echo $VCAP_SERVICES | /tmp/jq-linux64 -r '.dbaas[0].credentials.password') &&
        exec /app/run_metabase.sh
      env:
        MB_DB_TYPE: mysql
      memory: 2GB
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-02
      • 1970-01-01
      • 1970-01-01
      • 2019-06-22
      • 2021-03-05
      • 2014-12-17
      • 2021-11-09
      相关资源
      最近更新 更多