이 문서에서는 GitHub Codespaces 환경에서 FastAPI 및 Postgres를 함께 실행하는 방법을 보여 줍니다. Codespaces는 구성 가능하고 반복 가능한 개발 환경을 만드는 데 사용할 수 있는 클라우드 호스팅 개발 환경입니다.
GitHub Codespaces 확장Visual Studio Code 같은 IDE(통합 개발 환경)에서 샘플 리포지토리를 열 수 있습니다.
또는 샘플 리포지토리를 로컬로 복제할 수 있습니다. Visual Studio Code 프로젝트를 열 때 dev Containers를 사용하여 Dev Containers 사용하여 프로젝트를 실행할 수 있습니다. 개발 컨테이너를 사용하려면 Docker Desktop 을 로컬로 설치해야 합니다. Docker가 설치되지 않은 경우 GitHub Codespaces를 개발 환경으로 사용하여 프로젝트를 실행할 수 있습니다.
GitHub Codespaces를 사용하는 경우 매월 고정된 코어 시간이 있습니다. 이 자습서를 완료하려면 1시간 미만이 필요합니다. 자세한 내용은 GitHub Codespaces에 대한 청구 정보를 참조하세요.
이 설정을 시작점으로 사용하고 샘플을 수정하여 Django 또는 Flask와 같은 다른 Python 웹 프레임워크를 실행할 수도 있습니다.
Codespaces에서 개발 환경 시작
이 자습서에서는 GitHub Codespaces를 만들고 사용할 수 있는 여러 가지 방법 중 하나를 소개합니다.
샘플 앱 리포지토리 https://github.com/Azure-Samples/msdocs-fastapi-postgres-codespace로 이동합니다.
샘플 리포지토리에는 Postgres 데이터베이스를 사용하여 FastAPI 앱으로 환경을 만드는 데 필요한 모든 구성이 있습니다. GitHub Codespaces에 대한 Python 프로젝트 설정의 단계에 따라 유사한 프로젝트를 만들 수 있습니다.
코드, 코드스페이스 탭 + 을 선택하고 새 코드스페이스를 만듭니다.
컨테이너 빌드가 완료되면 브라우저의 왼쪽 아래 모서리에 Codespace가 표시되는지 확인하고 샘플 리포지토리를 확인합니다.
코드스페이스 키 구성 파일은 devcontainer.json, Dockerfile 및 docker-compose.yml. 자세한 내용은 GitHub Codespaces 개요를 참조하세요.
팁 (조언)
Visual Studio Code에서 코드스페이스를 실행할 수도 있습니다. 브라우저의 왼쪽 아래 모서리에 있는 Codespace를 선택하거나 (
Ctrl+Shift+P/Ctrl+Command+P) "Codespaces"를 입력합니다. 그런 다음 VS Code에서 열기를 선택합니다. 또한 코드스페이스를 중지하고 리포지토리로 돌아가 GitHub Codespaces에서 다시 여는 경우 VS Code 또는 브라우저에서 열 수 있는 옵션이 있습니다.메모
PostgreSQL을 시작하지 못하는 경우(컨테이너 크래시) PostgreSQL 18 이상과 기존 데이터 디렉터리 볼륨 간의 비호환성 때문일 수 있습니다.
.devcontainer/docker-compose.yaml을 편집하고postgres:latest을postgres:17(으)로 변경한 다음 컨테이너를 다시 빌드합니다. PostgreSQL 18에서 데이터 디렉터리 레이아웃이 변경되어 볼륨 탑재/var/lib/postgresql/data가 이전 버전과 호환되지 않습니다..env.devcontainer 파일을 선택하고 동일한 내용으로 .env라는 복사본을 만듭니다.
.env 파일에는 코드가 데이터베이스에 연결하는 데 사용하는 환경 변수가 포함되어 있습니다.
터미널 창이 아직 열려 있지 않으면 명령 팔레트()
Ctrl+Shift+P/Ctrl+Command+P를 열고 "터미널: 새 터미널 만들기"를 입력한 다음 선택하여 새 터미널을 만듭니다.터미널 창에서 포트 탭을 선택하여 PostgreSQL이 포트 5432에서 실행 중인지 확인합니다.
터미널 창에서 FastAPI 앱을 실행합니다.
uvicorn main:app --reload브라우저에서 열기 알림을 선택합니다.
알림이 표시되지 않거나 누락된 경우 포트로 이동하여 포트 8000에 대한 로컬 주소를 찾습니다. 나열된 URL을 사용합니다.
미리 보기 URL 끝에 /docs 를 추가하여 API 메서드를 테스트하는 데 사용할 수 있는 Swagger UI를 확인합니다.
API 메서드는 FastAPI가 코드에서 만드는 OpenAPI 인터페이스에서 생성됩니다.
Swagger 페이지에서 POST 메서드를 실행하여 레스토랑을 추가합니다.
POST 메서드를 확장합니다.
사용해 보기를 선택합니다.
요청 본문을 채웁니다.
{ "name": "Restaurant 1", "address": "Restaurant 1 address" }실행을 선택하여 변경 내용을 커밋합니다.
데이터베이스에 연결하고 데이터 보기
프로젝트의 GitHub Codespace로 돌아가서 SQLTools 확장을 선택한 다음 연결할 로컬 데이터베이스 를 선택합니다.
컨테이너를 만들 때 SQLTools 확장이 설치됩니다. SQLTools 확장이 작업 표시줄에 나타나지 않으면 코드스페이스를 닫고 다시 엽니다.
레스토랑 테이블을 찾을 때까지 로컬 데이터베이스 노드를 확장하고 마우스 오른쪽 단추를 클릭하고 테이블 레코드 표시를 선택합니다.
추가한 레스토랑이 표시됩니다.
청소
코드스페이스 사용을 중지하려면 브라우저를 닫습니다. (또는 VS Code를 그런 방식으로 연 경우 닫으세요.)
코드스페이스를 다시 사용하려는 경우 유지할 수 있습니다. 실행 중인 codespace에서만 CPU 요금이 발생합니다. 중지된 codespace에서는 스토리지 비용만 발생합니다.
코드스페이스를 제거하려면 코드스페이스 관리로 이동합니다 https://github.com/codespaces .
다음 단계
- Python 웹앱 개발
- 컨테이너 앱 개발
- Python용 Azure 라이브러리 사용 방법 배우기