Go 1.11 표준 런타임에서 실행되는 앱은 모든 linux/amd64 호환 패키지를 사용할 수 있습니다.
Go 모듈 사용
Go 모듈을 사용하여 Go 앱에서 종속 항목을 관리하는 것이 좋지만 Go 모듈로 마이그레이션할 준비가 되지 않았으면 이전 GOPATH를 계속 사용할 수 있습니다.
앱을 배포할 때 App Engine은 go build
명령어를 사용하여 앱을 빌드하므로 Go의 동작 자체와 일치합니다. 앱에 모듈 인식 모드가 사용되도록 하려면 개발 환경에서 다음을 수행합니다.
app.yaml
파일과 동일한 디렉터리에 모듈의go.mod
파일을 만듭니다. App Engine은 현재 디렉터리를 검색한 후go.mod
파일을 찾을 때까지 계속해서 그 다음 상위 디렉터리를 검색합니다.App Engine이
go.mod
파일을 찾지 못하면 GOPATH 모드를 따릅니다.GO111MODULE
환경 변수를 설정한 경우 변수 값이 모듈 인식 모드를 사용 설정했는지 확인합니다. 앱을 배포할 때 App Engine은GO111MODULE
환경을 확인하고 Go 자체 동작을 찾습니다. 앱에go.mod
파일이 포함되어 있으면 App Engine은GO111MODULE
변수 설정만 적용합니다.
$GOPATH/src
에 앱 디렉터리를 배치하지 마세요. 앱이$GOPATH/src
디렉터리 트리에 있는 경우 App Engine은 앱에go.mod
파일을 정의한 경우에도 GOPATH 모드를 따릅니다.
비공개 종속 항목 사용
App Engine은 빌드 프로세스 중 비공개 종속 항목을 다운로드할 수 없으므로 배포 시 애플리케이션 코드에 포함해야 합니다.
비공개 종속 항목을 선언하려면 go.mod
파일의 replace
지시문을 사용해야 합니다. 다음 예시에서는 앱이 /myapp/
디렉터리에 있다고 가정합니다.
앱 디렉터리로 변경합니다.
cd /myapp
비공개 종속 항목이 포함된 디렉터리를 만듭니다.
mkdir private
비공개 종속 항목이
private
디렉터리에 있는지 확인합니다. 한 가지 방법은 심볼릭 링크를 만드는 것입니다.mkdir private/private.example.com ln -s /path/to/private.example.com/foo private/private.example.com/foo
replace
지시문을 사용하여 종속 항목의private
디렉터리를 사용하도록go.mod
파일을 업데이트합니다.go mod edit -replace=private.example.com/foo=./private/private.example.com/foo
go.mod
파일은 다음과 같이 표시됩니다.최종
go.mod
파일module private.example.com/myapp require private.example.com/foo v1.2.3 replace private.example.com/foo => ./private/private.example.com/foo
원본
go.mod
파일module private.example.com/myapp require private.example.com/foo v1.2.3
비공개 패키지를 가져오고 사용하는 방법을 수정하면 안 됩니다.
import
문은 다음과 같습니다.import "private.example.com/foo"
앱을 배포하여 배포에 비공개 종속 항목을 포함합니다.
gcloud app deploy