2017-02-23 19 views
0

私のドッカーコンテナーは、データベースパラメータを環境変数で指定する必要があります。私の状況では、データベースパラメータはjson文字列である環境変数として(Cloud Foundryを使用して)コンテナに渡されています。私は、このコマンドで必要なDBパラメータを引くことができるよドッカー環境変数を異なる名前の既存の環境変数に設定する

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

しかし、私はドッキングウィンドウのイメージで必要な環境変数にそれらを設定するのですか? Cloud Foundryが渡した環境変数は、コンテナが起動されるまで使用できません。

+0

https://docs.docker.com/engine/:私は雲のファウンドリを使用していたので、私はこのように、manifest.ymlファイルを使用することができましたリファレンス/ビルダー/#/ arg – user2915097

+0

考えてくれてありがとう。はい、私はそれを調べました。ビルド時に渡される環境変数に影響するように思われるので、この場合は役に立たないと思います。 – byumark

+0

これは自分で作成したドッカーコンテナですか?またはDocker Hubから使用していますか? –

答えて

0

あなたはメタベースコンテナの周りに独自のラッパーのコンテナを作成することができ、そのよう:

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 [email protected] 
0

をスコット・ランキンの答えは正しいです。私はスコットの答えを見る前に別のオプションを見つけました。

は、ドキュメントがここにあなたがARGのdfirectiveを見てなかったです
--- 
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