Python 애플리케이션 빌드

빌드팩은 환경 변수를 통해 언어 관용적 구성을 지원합니다.

Python 버전 지정

기본적으로 Python 런타임 빌드팩은 최신 Python 인터프리터 안정화 버전을 사용합니다. 애플리케이션에 특정 버전이 필요한 경우 애플리케이션 루트 디렉터리에 .python-version 파일을 포함하여 버전을 지정하면 됩니다.

3.9.9

GOOGLE_PYTHON_VERSION 사용

GOOGLE_PYTHON_VERSION 환경 변수를 통해 Python 버전을 지정할 수도 있습니다. 두 구성이 모두 설정된 경우 GOOGLE_PYTHON_VERSION 값이 .python-version 파일보다 우선 적용됩니다. 기본적으로 .python-version 파일과 GOOGLE_PYTHON_VERSION 환경 변수가 모두 지정되지 않은 경우 Python의 최신 LTS 버전이 사용됩니다.

앱을 배포할 때 Python 3.10을 사용하도록 빌드팩을 구성하려면 다음을 실행합니다.

pack build sample-python --builder=gcr.io/buildpacks/builder \
  --env GOOGLE_PYTHON_VERSION="3.10.x"

또한 project.toml 프로젝트 설명자를 사용하여 프로젝트 파일과 함께 환경 변수를 인코딩할 수 있습니다. 환경 변수로 애플리케이션 빌드에 대한 안내를 참조하세요.

pip를 사용하여 종속 항목 지정

Python 빌드팩에서는 pip를 사용하여 애플리케이션 종속 항목을 관리할 수 있습니다. 애플리케이션 종속 항목은 루트 디렉터리의 requirements.txt 파일에 선언되어야 합니다.

requirements.txt 파일에는 패키지당 한 줄이 포함됩니다. 각 줄에는 패키지 이름과 선택사항으로 요청된 버전이 포함됩니다. 자세한 내용은 requirements.txt 참조를 참조하세요.

다음은 requirements.txt 파일의 예시입니다.

requests==2.20.0
numpy

pip 구성

환경 변수를 사용하여 pip 동작을 구성할 수 있습니다.

pack build sample-python --builder=gcr.io/buildpacks/builder \
  --env PIP_DEFAULT_TIMEOUT='60'

Artifact Registry의 비공개 종속 항목

Artifact Registry Python 저장소는 Python 함수의 비공개 종속 항목을 호스팅할 수 있습니다. Cloud Build에서 애플리케이션을 빌드할 때 Python 빌드팩은 Cloud Build 서비스 계정의 Artifact Registry 사용자 인증 정보를 자동으로 생성합니다. 추가 사용자 인증 정보를 생성하지 않고도 requirements.txt에 Artifact Registry URL만 포함하면 됩니다. 예를 들면 다음과 같습니다.

--extra-index-url REPOSITORY_URL
sampleapp
Flask==0.10.1
google-cloud-storage

애플리케이션 진입점

Python 빌드팩은 Gunicorn을 워크로드의 기본 WSGI HTTP 서버로 사용합니다. Python 빌드팩으로 빌드된 앱은 다음 실행과 비슷하게 기본 설정을 사용해서 gunicorn 프로세스를 시작합니다.

gunicorn --bind :8080 main:app

애플리케이션 진입점 맞춤설정

Procfile 또는 환경 변수를 사용하여 Gunicorn 기본값, 진입점 기본값을 재정의하고 애플리케이션 시작 명령어를 맞춤설정할 수 있습니다.

루트 디렉터리에서 커스텀 설정으로 Procfile을 만들 수 있습니다. 예를 들면 다음과 같습니다.

web: gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app

또는 pack 명령어에 GOOGLE_ENTRYPOINT 환경 변수를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

pack build sample-python \
  --builder gcr.io/buildpacks/builder
  --env "GOOGLE_ENTRYPOINT='gunicorn --bind :$PORT main:app'"

환경 변수

Python 빌드팩은 컨테이너를 맞춤설정하기 위해 다음 환경 변수를 지원합니다.

PIP_<key>

pip 문서를 참조하세요.

예: PIP_DEFAULT_TIMEOUT=60pip 명령어에 --default-timeout=60을 설정합니다.