Skip to main content

환경 변수 및 임시 파일 유지

codespace를 열 때마다 동일한 값으로 설정되도록 사용자 지정 환경 변수를 구성할 수 있습니다. 또한 codespace가 중지될 때 임시 파일이 삭제되지 않도록 구성할 수도 있습니다.

환경 변수 유지 설정

변수를 사용할 codespaces, 리포지토리 또는 사용자에 따라 여러 가지 방법으로 영구 사용자 지정 환경 변수를 설정할 수 있습니다.

아래에 나열된 사용자 지정 변수를 설정하는 모든 방법을 통해, echo $VARNAME(와)과 같은 구문을 사용하여 codespace의 사용자 지정 변수에 액세스할 수 있습니다.

codespace의 경우

Bash 셸을 사용하지 않는 경우 ~/.bashrc 파일 또는 해당하는 구성 파일에서 환경 변수의 값을 설정할 수 있습니다. 예를 들어, 다음 VARNAME=value 문을 추가합니다.

이 파일에 변경 내용이 저장되면 다음에 codespace를 열 때 값이 설정되거나 source ~/.bashrc 같은 명령을 사용하여 즉시 설정할 수 있습니다. codespace를 중지하고 시작하면 변수가 다시 설정됩니다. 그러나 컨테이너를 다시 빌드하면 홈 디렉터리의 파일 변경 내용이 다시 설정되므로 ~/.bashrc 파일에 설정된 변수는 다시 빌드를 통해 유지되지 않습니다. 자세한 내용은 "임시 파일이 자동으로 삭제되지 않도록 방지"를 참조하세요.

리포지토리에 대한 모든 codespace의 경우

리포지토리용으로 만드는 모든 codespaces에 대해 영구 사용자 지정 환경 변수를 설정할 수 있는 세 가지 방법이 있습니다.

  • 리포지토리용 devcontainer.json 구성 파일을 편집할 수 있습니다.
  • 사용자 지정 Dockerfile을 사용할 수 있습니다.
  • 개발 환경 비밀을 사용할 수 있습니다.

리포지토리용 devcontainer.json 구성 파일을 편집하기

리포지토리용 devcontainer.json 구성 파일을 편집하고 remoteEnv 속성을 사용하여 환경 변수 값을 설정합니다.

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

리포지토리에 일반 텍스트로 커밋할 수 있는 값에만 이 메서드를 사용합니다. 액세스 토큰과 같은 중요한 값의 경우 개발 환경 비밀을 사용합니다.

환경 변수는 편집기의 원격 서버 프로세스 내에서 설정되며 터미널 및 디버깅 세션과 같은 해당 원격 서버 프로세스의 하위 프로세스에 사용할 수 있습니다. 그러나 변수를 컨테이너 내에서 더 광범위하게 사용할 수는 없습니다. 이 메서드는 시작 시 실행되는 다른 백그라운드 프로세스에 대해 환경 변수를 설정할 필요가 없고 미리 만든 이미지를 사용하고 사용자 지정 Dockerfile이 없거나 원하는 경우에 유용합니다.

이 설정은 이 변경 내용을 리포지토리에 푸시한 후 컨테이너를 다시 빌드하거나 새 codespace를 만들 때 적용됩니다. codespace에 구성 변경 내용 적용에 대한 자세한 내용은 “개발 컨테이너 소개”을(를) 참조하세요.

사용자 지정 Dockerfile 사용

사용자 지정 Dockerfile을 사용하는 경우 ENV VARNAME=value을(를) 추가하여 환경 변수를 설정할 수 있습니다.

이 메서드는 Dockerfile이 이미 있고 컨테이너 전체 수준에서 변수를 설정하려는 경우에 유용합니다.

이 설정은 이 변경 내용을 리포지토리에 푸시한 후 컨테이너를 다시 빌드하거나 새 codespace를 만들 때 적용됩니다. codespace에 구성 변경 내용 적용에 대한 자세한 내용은 “개발 컨테이너 소개”을(를) 참조하세요.

개발 환경 비밀 사용

GitHub Codespaces에 대한 개발 환경 비밀을 사용하여 리포지토리용으로 만든 codespaces에 사용자 지정 변수를 설정할 수 있습니다. 자세한 내용은 "GitHub Codespaces에 대한 계정별 비밀 관리"을(를) 참조하세요.

리포지토리에 일반 텍스트로 커밋하지 않으려는 환경 변수 값에 이 메서드를 사용해야 합니다.

이 설정은 다음에 이 리포지토리에 대한 codespace를 만들 때 또는 기존 codespace를 다시 시작할 때 적용됩니다.

만드는 모든 codespace의 경우

만든 모든 codespace에 대해 개인 설정된 환경 변수를 설정하려면 dotfiles 리포지토리의 파일을 사용하여 이 변수를 설정할 수 있습니다. 예: .bash_profile 파일에 VARNAME=value 추가 dot 파일에서 설정한 환경 변수는 개인용이며 다른 사용자에 대해 설정되지 않습니다. dot 파일에 대한 자세한 내용은 "계정에 맞게 GitHub Codespaces 개인 설정"을(를) 참조하세요.

임시 파일이 자동으로 삭제되지 않도록 방지

codespace를 만들면 리포지토리가 codespace의 /workspaces 디렉터리에 복제됩니다. 이 디렉토리는 컨테이너에 탑재되는 영구 디렉터리입니다. 파일 편집, 추가 또는 삭제를 포함하여 이 디렉터리 내에서 변경한 내용은 codespace를 중지하고 시작할 때와 codespace에서 컨테이너를 다시 빌드할 때 유지됩니다.

/workspaces 디렉터리 외부의 codespace에는 codespace를 빌드하는 데 사용되는 개발 컨테이너 이미지에 따라 달라지는 Linux 디렉터리 구조가 포함됩니다. /workspaces 디렉토리 외부의 파일을 추가하거나 변경할 수 있습니다. 예를 들어 새 프로그램을 설치하거나 파일(예: ~/.bashrc)에서 셸 구성을 설정할 수 있습니다. 루트가 아닌 사용자는 특정 디렉터리에 대한 쓰기 액세스 권한을 자동으로 부여하지 않을 수 있지만 대부분의 이미지는 sudo 명령을 사용하여 이러한 디렉터리에 대한 루트 액세스를 허용합니다.

/tmp 디렉터리를 제외하고 /workspaces 외부에서는 codespace의 디렉터리가 컨테이너의 수명 주기에 연결됩니다. 즉, 코드 영역을 중지하고 시작할 때 변경 내용이 유지되지만 컨테이너를 다시 빌드할 때는 유지되지 않습니다. /workspaces 디렉터리 외부에서 데이터를 보존하기 위한 symlink를 만드는 방법에 대한 자세한 내용은 "Codespace에서 컨테이너 다시 빌드"을(를) 참조하세요.

/tmp 디렉터리가 컨테이너에 탑재되어 있으므로 예외이지만 영구적이지는 않습니다. 따라서 /tmp 디렉터리의 내용은 다시 빌드를 통해 유지되지만 codespace가 중지될 때마다 지워집니다. 예를 들어 비활성 기간 후에 codespace 세션이 시간 초과되면 /tmp 디렉터리가 지워집니다. 자세한 내용은 "Github Codespaces의 시간 제한 기간 설정"을(를) 참조하세요.

다음에 codespace를 시작할 때 사용할 수 있도록 하려는 임시 파일이 있는 경우 /tmp 디렉터리에 저장하지 마세요.

추가 참고 자료