Go 애플리케이션 빌드

Go 버전 지정

기본적으로 Go 빌드팩은 최신 Go 컴파일러 안정화 버전을 사용합니다. 애플리케이션에 특정 버전이 필요한 경우 GOOGLE_GO_VERSION 환경 변수를 사용하여 사용 가능한 Go 버전을 선택하는 데 사용되는 semver 제약조건을 제공할 수 있습니다.

pack build sample-go --builder=gcr.io/buildpacks/builder \
  --env GOOGLE_GO_VERSION="17.x.x"

컴파일 플래그

Go 빌드팩은 go build command를 사용하여 애플리케이션 소스를 실행 파일로 컴파일합니다. 다음 환경 변수를 사용하여 빌드 동작을 구성할 수 있습니다.

  • GOOGLE_BUILDABLE 빌드 가능한 단위의 경로를 지정합니다. 예를 들어 Go용 ./maindirmaindir를 기반으로 하는 패키지를 빌드합니다.

  • GOOGLE_CLEAR_SOURCE 애플리케이션 이미지에서 소스 코드를 생략합니다. 애플리케이션에서 Go 템플릿과 같은 정적 파일을 사용하는 경우 이 변수를 설정하면 애플리케이션이 오작동할 수 있습니다. 예를 들어 true, True, 1에서 소스를 삭제합니다.

  • GOOGLE_GOGCFLAGS 해석 없이 go buildgo run-gcflags 값으로 전달됩니다. 예를 들어 all=-N -l는 경합 상태 분석을 사용 설정하고 소스 파일 경로가 바이너리에 기록되는 방법을 변경합니다.

  • GOOGLE_GOLDFLAGS 해석 없이 -ldflags 값으로 go build와 go run에 전달됩니다. 예를 들어 -s -w는 바이너리 크기를 제거하고 줄이는 데 사용됩니다.

종속 항목 관리

Go 모듈을 사용하여 Go 앱에서 종속 항목을 관리하는 것이 좋습니다. Go 빌드팩은 go build 명령어를 사용하여 앱을 빌드하므로 Go 동작 자체와 일치합니다. 앱에서 모듈 인식 모드를 사용하도록 하려면 애플리케이션 루트에 go.mod 파일을 포함해야 합니다.

종속 항목 벤더링

벤더링은 빌드 프로세스 중에 소스에서 모듈을 다운로드하는 대신 앱에서 사용하는 패키지를 애플리케이션 디렉터리에 복사합니다. Go는 앱의 루트 디렉터리에 있는 vendor라는 디렉터리에 앱에 필요한 패키지를 벤더링하기 위해 go build 명령어를 제공합니다.

애플리케이션 진입점 구성

기본적으로 Go 빌드팩은 애플리케이션 소스를 컴파일할 때 생성되는 main 실행 파일을 호출하는 애플리케이션 컨테이너 항목을 구성합니다. 이를 재정의해야 하는 경우 Procfile을 제공하거나 GOOGLE_ENTRYPOINT 환경 변수를 전달하여 수행하면 됩니다.

환경 변수

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

GO

환경 변수에 대한 Go 문서를 참조하세요.

예: GOFLAGS=-flag=value-flag=valuego 명령어에 전달합니다.