docker-composeで機密情報を環境変数から分離する方法
compose.ymlに機密を直書きするとリポジトリ漏洩に直結する。envファイル分離、Docker secrets、外部シークレットストアの3段階の管理方法を比較する。
.envファイルによる分離
最低限の対策として機密を.envに逃がし、.gitignoreに追加する。variable展開でcompose.ymlから参照でき、導入コストが最も低い。
Docker secretsの利用
secretsとして定義するとコンテナ内に/run/secrets/以下のファイルとしてマウントされる。環境変数と違いpsやinspectで漏れない利点がある。
外部ストアとの連携
本番相当ではクラウドのシークレット管理サービスから起動時に取得する方式が堅い。エントリポイントで取得して環境へ注入するラッパーが定番。