環境変数
以下のいずれかのオプションを使用すると、コンテナーイメージを変更することなく、コンテナーに環境変数を設定できます。
設定でターミナル > 統合: 環境を継承するがチェックされていることを確認してください。そうしないと、設定した変数が統合ターミナルに表示されない場合があります。この設定はデフォルトでチェックされています。
オプション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 コンテナーで 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
を編集し、devcontainer.env
ファイルへのパスをDocker Composeファイルからの相対パスで追加します。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...を実行してコンテナーに接続します。