종속 항목 지정

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/ 디렉터리에 있다고 가정합니다.

  1. 앱 디렉터리로 변경합니다.

    cd /myapp
    
  2. 비공개 종속 항목이 포함된 디렉터리를 만듭니다.

    mkdir private
    

    비공개 종속 항목이 private 디렉터리에 있는지 확인합니다. 한 가지 방법은 심볼릭 링크를 만드는 것입니다.

    mkdir private/private.example.com
    ln -s /path/to/private.example.com/foo private/private.example.com/foo
    
  3. 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
    
  4. 비공개 패키지를 가져오고 사용하는 방법을 수정하면 안 됩니다. import 문은 다음과 같습니다.

    import "private.example.com/foo"
    
  5. 앱을 배포하여 배포에 비공개 종속 항목을 포함합니다.

    gcloud app deploy