2016-09-14 18 views
4

私は部分的に動作可能なドッカー画像を持っています。完全に動作させるには実行する必要がありますドッカーに渡される環境変数

sudo docker run -d -p 80 --name myimage -e ADMIN_USER="user1" -e ADMIN_PASSWORD='password1' leonixyz/myimage:1.0 

初めて画像が実行されると、自分のアプリケーションが内部で設定されます。

これは、別のユーザーのたびに設定する必要があるアプリケーションの新しいインスタンスが必要になるたびにdocker runに異なる環境変数を渡すことができ、私のコードは新しいユーザー。

残念ながら、これらの変数はコンテナから削除できないことがわかります。

私が行う場合:

sudo docker exec -it <container_id> bash 

その後、私は、変数ADMIN_USERADMIN_PASSWORDを見ることができますが、まだそこに(明らかに)です。

私はワンタイムコンフィギュレーションコードの最後にunset ADMIN_PASSWORDを試しましたが、動作しません。

実行中のコンテナ内のbashシェルからunset ADMIN_PASSWORDを実行しても動作しません。

コンテナから環境変数を削除する方法はありますか?それは、環境変数経由ですべての秘密を渡さない方が良いでしょう指摘したように

おかげ


編集 は、偉大な回避策は逆のアプローチについてはこちらをhttps://github.com/docker/docker/issues/13490#issuecomment-162125128

答えて

2

資格情報を保持する環境変数を「設定解除」する唯一の合理的な方法は、最初にそれらを設定しないことです。資格情報には環境変数を使用しないでください。一般的には "秘密"です。

次に、適切な要約を示します。https://github.com/docker/docker/issues/13490

+0

ありがとうございました、この会話で、このコメントが特に役に立ちました。https://github.com/docker/docker/issues/13490#issuecomment-162125128 – leonixyz

0

どう説明されていますか?代わりに、実行時に的環境変数を渡すので、あなたはこのような何かにあなたのエントリポイントを設定できます

ENTRYPOINT export ADMIN_USER="user1" \ 
       && export ADMIN_PASSWORD='password1' \ 
       && entrypoint.sh 

別のアプローチは、あなたのエントリポイントスクリプトを実引数として必要な変数を渡すことであろう。

関連する問題