Docker は、ビルド時変数には ARG を、ランタイム変数には ENV を使用し、異なる構成目的を果たす。ARG の値はイメージのビルドプロセス中でのみ使用可能であり、アプリケーションコードではアクセスできません。ENV 変数は Dockerfile と実行中のコンテナーのアプリケーションコードの両方でアクセス可能です。ENV 変数は、Dockerfile で設定することができ、`docker run` コマンドを介して、または `.env` ファイルを介して設定することもできます。ランタイムの値は Dockerfile のデフォルト値を上書きします。 Dockerfile に直接機密情報を環境変数として保存することは、イメージに組み込まれるためセキュリティーリスクがあるため、機密情報には別の環境ファイルを使用し、バージョン管理から除外することをお勧めします。ARG は、ビルド時のデフォルト値を `--build-arg` フラグを使用して設定することができるため、構成の柔軟性を高めます。Docker のビルドを最適化するには、依存関係のインストール後に ARG 変数を定義することで、不要な再インストールを避けることができます。ARG と ENV を適切に使用することで、柔軟、構成可能、セキュアな Docker アプリケーションの構築に貢献します。両者の違いを理解することで、開発者はワークフローの改善を図りつつ、セキュリティと効率を維持することができます。
dev.to
Mastering Docker ARG and ENV: Optimizing Configuration for Development and Production
Create attached notes ...