Skip to main content
ドキュメントへの更新が頻繁に発行されており、このページの翻訳はまだ行われている場合があります。 最新の情報については、「英語のドキュメント」を参照してください。

環境変数と一時ファイルを永続化する

codespace を開くたびに同じ値に設定されるように、カスタム環境変数を構成できます。 また、codespace が停止しても一時ファイルが削除されないようにすることもできます。

永続的な環境変数を設定する

変数を使用できるようにする codespace、リポジトリ、またはユーザーに応じて、複数の方法で永続的なカスタム環境変数を設定できます。

以下に示すすべてのカスタム変数設定方法で、echo $VARNAME のような構文を使って codespace 内のカスタム変数にアクセスできます。

1 つの codespace の場合

~/.bashrc ファイルまたは Bash シェルを使っていない場合は同等の構成ファイルで、環境変数の値を設定できます。 たとえば、VARNAME=value ステートメントを追加します。

変更をこのファイルに保存すると、次に codespace を開いたときに値が設定されます。または、source ~/.bashrc などのコマンドを使ってすぐに設定できます。 codespace を停止して開始した場合、変数は設定されたままになります。 ただし、コンテナーをリビルドした場合、ホーム ディレクトリ内のファイルに対する変更はリセットされるため、~/.bashrc ファイルで設定された変数はリビルドすると保持されません。 「一時ファイルが自動的に削除されないようにする」をご覧ください。

リポジトリのすべての codespace の場合

リポジトリ用に作成したすべての codespace に対して永続的なカスタム環境変数を設定する方法は 3 つあります。

  • リポジトリの devcontainer.json 構成ファイルを編集できます
  • カスタム Dockerfile を使用できます
  • 暗号化されたシークレットを使用できます

リポジトリの devcontainer.json 構成ファイルを編集する

リポジトリの devcontainer.json 構成ファイルを編集し、remoteEnv プロパティを使って環境変数の値を設定します。

{
    "remoteEnv": {
      "VARNAME": "value"
   }
}

この方法は、プレーンテキストとしてリポジトリにコミットしても問題がない値にのみ使ってください。 アクセス トークンなどの機密性の値の場合は、暗号化されたシークレットを使います。

環境変数は、エディターのリモート サーバー プロセス内で設定され、ターミナルやデバッグ セッションなど、そのリモート サーバー プロセスのサブプロセスで使用できます。 ただし、コンテナー内でさらに広範囲に変数を使うことはできません。 この方法は、起動時に実行される他のバックグラウンド プロセス用に環境変数を設定する必要がない場合や、事前に作成されたイメージを使っていて、カスタム Dockerfile がない場合や必要ない場合に便利です。

この設定は、この変更をリポジトリにプッシュした後、コンテナーをリビルドするか、新しい codespace を作成すると有効になります。 codespace に構成の変更を適用する方法について詳しくは、「開発コンテナーの概要」をご覧ください。

カスタム Dockerfile を使用する

カスタム Dockerfile を使っている場合は、ENV VARNAME=value を追加することにより、そこで環境変数を設定できます。

この方法は、Dockerfile が既にあり、コンテナー全体のレベルで変数を設定したい場合に便利です。

この設定は、この変更をリポジトリにプッシュした後、コンテナーをリビルドするか、新しい codespace を作成すると有効になります。 codespace に構成の変更を適用する方法について詳しくは、「開発コンテナーの概要」をご覧ください。

暗号化されたシークレットを使用する

GitHub Codespaces 用の暗号化されたシークレットを使って、リポジトリ用に作成された codespace のためのカスタム変数を設定できます。 詳しくは、「codespaces の暗号化されたシークレットを管理する」を参照してください。

リポジトリにプレーンテキストとしてコミットしたくない環境変数の値の場合は、この方法を使う必要があります。

この設定は、このリポジトリ用の codespace を次に作成するとき、または既存の codespace を再起動したときに有効になります。

作成したすべての codespace の場合

作成したすべての codespace についてカスタマイズされた環境変数を設定したい場合は、dotfiles リポジトリ内のファイルを使ってこれを設定できます。 たとえば、.bash_profile ファイルに VARNAME=value を追加します。 ドットファイルで設定した環境変数は個人用であり、他のユーザーには設定されません。 ドットファイルについて詳しくは、「アカウントの GitHub Codespaces をパーソナライズする」をご覧ください。

一時ファイルが自動的に削除されないようにする

When you create a codespace, your repository is cloned into the /workspaces directory in your codespace. This is a persistent directory that is mounted into the container. Any changes you make inside this directory, including editing, adding, or deleting files, are preserved when you stop and start the codespace, and when you rebuild the container in the codespace.

Outside the /workspaces directory, your codespace contains a Linux directory structure that varies depending on the image used to build your codespace. You can add files or make changes to files outside the /workspaces directory: for example, you can install new programs, or you can set up your shell configuration in a file such as ~/.bashrc. As a non-root user, you may not automatically have write access to certain directories, but most images allow root access to these directories with the sudo command.

Outside /workspaces, with the exception of the /tmp directory, the directories in a codespace are tied to the lifecycle of the container. This means any changes you make are preserved when you stop and start your codespace, but are not preserved when you rebuild of the container. /workspaces ディレクトリの外側にあるデータを保持するためのシンボリック リンクの作成について詳しくは、「codespace でのコンテナーのリビルド」をご覧ください。

/tmp ディレクトリは例外です。コンテナー内にマウントされていても永続的ではないからです。 したがって、/tmp ディレクトリのコンテンツはリビルド時に保持されますが、codespace が停止するたびにクリアされます。 たとえば、非アクティブな時間が経過した後に codespace セッションがタイムアウトすると、/tmp ディレクトリがクリアされます。 詳しくは、「GitHub Codespaces のタイムアウト期間を設定する」を参照してください。

次に codespace を起動したときに使用できるようにしたい一時ファイルがある場合は、/tmp ディレクトリに保存しないでください。

参考資料