環境変数
コンテナイメージを変更することなく、以下のいずれかのオプションを使用してコンテナ内に環境変数を設定できます。
設定で Terminal > Integrated: Inherit Env にチェックが入っていることを確認してください。そうしないと、設定した変数が統合ターミナルに表示されない場合があります。この設定はデフォルトでチェックされています。
オプション 1: 個別の変数を追加する
devcontainer.json で参照している内容に応じて
-
Dockerfile またはイメージ:
devcontainer.jsonにcontainerEnvプロパティを追加してコンテナ全体に適用する変数を設定するか、remoteEnvを追加して VS Code および関連するサブプロセス(ターミナル、タスク、デバッグなど)用の変数を設定します。"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はローカル変数と既存のコンテナ変数の両方を参照できます。
動画: 開発コンテナでの 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: Rebuild Container を実行して変更を反映させてください。それ以外の場合は、Dev Containers: Open Folder in 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: Rebuild Container を実行して変更を反映させてください。それ以外の場合は、Dev Containers: Open Folder in Container... を実行してコンテナに接続してください。