環境変数
コンテナーイメージを変更せずに、以下のいずれかのオプションを使用して、コンテナーに環境変数を設定できます。
設定で [ターミナル] > [統合]: [環境を継承] がオンになっていることを確認してください。そうしないと、設定した変数が統合ターミナルに表示されない場合があります。この設定はデフォルトでオンになっています。
オプション 1: 個別の変数を追加する
`devcontainer.json` で何を参照するかによって
-
Dockerfile または イメージ: コンテナー全体に適用される変数を設定するには、`devcontainer.json` に `containerEnv` プロパティを追加します。VS Code および関連するサブプロセス (ターミナル、タスク、デバッグなど) の変数を設定するには、`remoteEnv` を追加します。
"containerEnv": { "MY_CONTAINER_VAR": "some-value-here", "MY_CONTAINER_VAR2": "${localEnv:SOME_LOCAL_VAR}" }, "remoteEnv": { "PATH": "${containerEnv:PATH}:/some/other/path", "MY_REMOTE_VARIABLE": "some-other-value-here", "MY_REMOTE_VARIABLE2": "${localEnv:SOME_LOCAL_VAR}" }
この例が示すように、`containerEnv` はローカル変数を参照でき、`remoteEnv` はローカル変数と既存のコンテナー変数の両方を参照できます。
ビデオ: Dev Container で PATH を変更する
-
Docker Compose: Docker Compose にはコンテナー全体の変数を更新するための組み込みサポートがあるため、`devcontainer.json` では `remoteEnv` のみがサポートされています。
"remoteEnv": { "PATH": "${containerEnv:PATH}:/some/other/path", "MY_REMOTE_VARIABLE": "some-other-value-here", "MY_REMOTE_VARIABLE2": "${localEnv:SOME_LOCAL_VAR}" }
この例が示すように、`remoteEnv` はローカル変数と既存のコンテナー変数の両方を参照できます。
コンテナー全体に適用される変数を更新するには、適切なサービスに対して、`docker-compose.yml` を更新 (または拡張) してください。
version: '3' services: your-service-name-here: environment: - YOUR_ENV_VAR_NAME=your-value-goes-here - ANOTHER_VAR=another-value # ...
コンテナーを既にビルドして接続している場合は、コマンドパレット (F1) から [Dev Containers: Container の再構築] を実行して変更を反映します。それ以外の場合は、[Dev Containers: Container でフォルダーを開く...] を実行してコンテナーに接続します。
オプション 2: .env ファイルを使用する
設定する必要がある環境変数が多数ある場合は、代わりに `.env` ファイルを使用できます。
まず、ソースツリー内のどこかに環境ファイルを作成します。この `.devcontainer/devcontainer.env` ファイルを検討してください。
YOUR_ENV_VAR_NAME=your-value-goes-here
ANOTHER_ENV_VAR_NAME=your-value-goes-here
次に、`devcontainer.json` で何を参照するかによって
-
Dockerfile または イメージ: `devcontainer.json` を編集し、`devcontainer.env` へのパスを追加します。
"runArgs": ["--env-file",".devcontainer/devcontainer.env"]
-
Docker Compose: `docker-compose.yml` を編集し、Docker Compose ファイルを基準とした `devcontainer.env` ファイルへのパスを追加します。
version: '3' services: your-service-name-here: env_file: devcontainer.env # ...
`docker compose` は、`docker-compose.yml` を含むフォルダー内の `.env` という名前のファイルを自動的に取得しますが、別の場所に作成することもできます。
コンテナーを既にビルドして接続している場合は、コマンドパレット (F1) から [Dev Containers: Container の再構築] を実行して変更を反映します。それ以外の場合は、[Dev Containers: Container でフォルダーを開く...] を実行してコンテナーに接続します。