11

Docker Web アプリ (レール) が適切にデプロイされた EB 環境があります。いくつかの EB env 変数を設定すると、コンテナー内で適切に表示されます。ここで、これらの EB 環境変数を EC2 インスタンス ホストに表示して、docker ビルド プロセスで使用できるようにしたいと考えています。ただし、それらはコンテナーに対してのみ公開され、docker ホストには公開されません。
EB env 変数を Docker ホストに公開するにはどうすればよいですか?

4

5 に答える 5

10

同じ問題に遭遇しましたが、デプロイ後の Bash スクリプトの実行中に環境変数を使用できるようにする必要がありました。

jq パーサーは (現在の) Amazon Linux AMI で利用できるため、それを使用して JSON を解析し、ホスト上の環境変数をエクスポートすることで、同様のことを実現できました (これは ebextensions 構成ファイルからの抜粋です)

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/export_env_vars_on_host.sh":
  mode: "000755"
  owner: root
  group: root
  content: |
    #!/usr/bin/env bash
    echo Defaults:root \!requiretty >> /etc/sudoers
    for envvar in `jq '.optionsettings | {"aws:elasticbeanstalk:application:environment"}[] | .[]' /opt/elasticbeanstalk/deploy/configuration/containerconfiguration`
    do
      temp="${envvar#\"}";
      temp="${temp/=/=\"}";
      export temp;
    done
于 2015-05-20T20:10:35.057 に答える
5

Elasticbeanstalk のすべてのバージョンでこれをテストしたわけではありません。しかし、少なくとも 64 ビットの Amazon Linux 2015.03 v2.0.1 でマルチコンテナ Docker 1.6.2 (Generic) を実行している場合は、設定から環境変数を取得するより良い方法があります。環境変数の適切な json 表現を提供する ruby​​ スクリプトがインスタンスに既に存在します。{ "SOME_ENV_VAT" : "VALUE" }

# returns literal null from jq
sudo /opt/elasticbeanstalk/bin/get-config environment | jq -r '.MY_ENVVAR'

# returns empty string. Usefull for bash -z
sudo /opt/elasticbeanstalk/bin/get-config environment | jq -r '.MY_ENVVAR // empty'
于 2015-12-18T23:23:10.150 に答える
2

キングオブワンライナー。

eval $(sudo ruby -e 'require "json"; container_config = JSON.parse(File.read("/opt/elasticbeanstalk/deploy/configuration/containerconfiguration")); raw_vars = container_config["optionsettings"]["aws:elasticbeanstalk:application:environment"]; envs = ""; raw_vars.each do |raw_var| envs << "export #{raw_var};\n" end; print envs;')

これにより、すべての変数が自動的にエクスポートされます。putsRuby で環境変数を出力するために使用することはできません。

于 2015-12-12T10:36:51.907 に答える