コンテナー内にアプリがあり、サービスにアクセスするためのパスワードと API キーの環境変数を読み取っています。(docker 内ではなく) 自分のマシンでアプリを実行するexport SERVICE_KEY='wefhsuidfhda98'
と、アプリはそれを使用できます。
これに対する標準的なアプローチは何ですか?export
コマンドでサーバーに追加され、そのファイルで実行される秘密のファイルを持つことを考えていましたsource
。
私はドッカーとイチジクを使用しています。
私が解決した解決策は次のとおりです。環境変数をシークレット ファイルに保存し、それらを fig を使用してコンテナーに渡します。
secret_env
秘密情報を含むファイルを持っている、例えば
export GEO_BING_SERVICE_KEY='98hfaidfaf'
export JIRA_PASSWORD='asdf8jriadf9'
secret_env
私の中に持っている.gitignore
開発者用のsecret_env.template
ファイルがあります。
export GEO_BING_SERVICE_KEY='' # can leave empty if you wish
export JIRA_PASSWORD='' # write your pass
私fig.yml
の場合、変数を次の方法で送信します。
environment:
- GEO_BING_SERVICE_KEY
- JIRA_PASSWORD
source secret_env
建てる前に電話するdocker run
環境変数を提供します:
docker run -e SERVICE_KEY=wefsud your/image
次に、アプリケーションは環境から SERVICE_KEY を読み取ります。
https://docs.docker.com/reference/run/
図では、使用します
environment:
- SERVICE_KEY: wefsud
アプリの仕様で。 http://www.fig.sh/yml.html
セキュリティの観点からは、Docker バイナリに root アクセスが必要な場合、前者のソリューションはホストで実行するよりも悪くありません。「docker」グループのユーザーに docker の実行を許可している場合、すべての docker ユーザーがdocker inspect
コンテナーを実行できるため、安全性が低くなります。ホスト上で実行している場合、実行中のプロセスの環境変数を調べるには root になる必要があります。