Saya sedang menulis program yang bercakap dengan sepana awan menggunakan dialek postgres. Aplikasi saya ialah pelayan gin dan saya menggunakan pgadapter untuk menyambung seperti yang diterangkan dalam dokumen ini.
Apl saya berfungsi dengan baik di dalam negara. Tetapi apabila saya menggunakan ia ke awan untuk dijalankan, saya menerima log berikut.
Ralat ini terutamanya datang daripada fungsi startpgadapterwithcredentials
.
func StartPGAdapter(ctx context.Context, project, instance string) (port int, cleanup func(), err error) { credentials, err := google.FindDefaultCredentials(ctx) fmt.Println("credentials " + (credentials.ProjectID) + "json " + utils.ToString(credentials.JSON) + "ts " + utils.ToString(credentials.TokenSource)) if err != nil { return 0, func() {}, err } return StartPGAdapterWithCredentials(ctx, project, instance, credentials) } func StartPGAdapterWithCredentials(ctx context.Context, project, instance string, credentials *google.Credentials) (port int, cleanup func(), err error) { if credentials == nil { return 0, func() {}, fmt.Errorf("credentials cannot be nil") } if credentials.JSON == nil || len(credentials.JSON) == 0 { return 0, func() {}, fmt.Errorf("only JSON based credentials are supported") } credentialsFile, err := os.CreateTemp(os.TempDir(), "pgadapter-credentials") if err != nil { return 0, func() {}, err }
Pada sistem tempatan saya, google_application_credentials
disediakan supaya ia boleh mendapatkan kelayakan. Walau bagaimanapun, ini tidak berfungsi apabila berjalan di awan.
Bagaimana untuk menjadikannya berjalan di awan?
Maklumat tambahan: Ikuti contoh yang disediakan di sini.
Nampaknya anda cuba memulakan PGAdapter dalam bekas terbenam di Cloud Run dan kemudian salin bukti kelayakan akaun perkhidmatan dari persekitaran anda ke bekas terbenam PGAdapter. Masalahnya ialah Cloud Run tidak menyediakan akses kepada fail akaun perkhidmatan asas. Sebaliknya, anda harus membenarkan pustaka Google Cloud mendapatkan bukti kelayakan lalai persekitaran.
Bahagian sukar dalam contoh anda ialah anda memulakan PGAdapter dalam bekas terbenam, yang bermaksud tiada bukti kelayakan lalai dalam persekitaran itu. Cara yang disyorkan untuk menjalankan PGAdapter pada Cloud Run adalah dengan memasukkannya ke dalam bekas utama. Ini akan membolehkan PGAdapter memperoleh hanya kelayakan lalai yang disediakan oleh Cloud Run. Ini bermakna anda tidak sepatutnya menentukan parameter -c /path/to/credentials.json
semasa memulakan PGAdapter.
Terdapat (sekurang-kurangnya) dua cara untuk memasukkan Penyesuai PGA dalam bekas utama:
.jar
文件构建添加到您的 Docker 映像中,并在容器中启动 PGAdapter。请参阅[此示例]了解如何直接从 .jar
ke dalam PGAdapter. Ini juga memerlukan anda menambah Java JRE pada imej Docker. ENTRYPOINT
imej asas. Lihat Contoh Larian Awan PGAdapter Go untuk contoh yang luas (boleh dijalankan) bagi pilihan terakhir.
Atas ialah kandungan terperinci Bukti kelayakan lalai tidak ditemui dalam Cloud Run. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!